コードじぇねれーと3

前回、生成先ファイルから生成元ファイルに変更を反映させるにはマクロが使えると書きました。勢いで書いてしまったのですが、よく考えてみると「生成後のソースの変更を生成元のソースに反映させる」というのとはちょっと違うかもしれません(^^ まあ細かいことはおいておきましょう。もしc++で多重継承が使えなかったとしてmix-inはこのように実現できます。


file: module.inc
int m_value;
int getValue() { return m_value; }
void setValue(int value) { m_value = value; }

file: test.h
class Test {
public:
Test() {}

#include "module.inc"
};

(.incはinclude専用ファイルであることを示しています。)

分かるでしょうか。要するにmix-inファイルを別に用意して#includeしてやるだけなんです(もちろん#defineを使っても構いませんがコンパイルエラー箇所の検出が難しくなります)。こうすると生成先に間違いがあった時でも変更は生成元で行われるので、少なくとも変更箇所を記憶する必要はありません。#includeは本当に単純なテキストコピーを行うので、他言語では排斥の対象になっていますが、うまく使うと本当に便利です。