というクラスがあったとする。 iは、a.cpp内で const int i = 1; jは、b.cpp内で const int j = a::i; と宣言されていたとしよう。 このとき、定数のはずのjは、Bのメンバ関数内で定数として扱えない。 例えば、
コンパイラやリンカがエラーを吐いてしまう、ゲロゲロと。 iもjもconst型で定義し、定数で初期化しているにもかかわらず。 原因は簡単で、const宣言がソースファイル2つにまたがっているためである(多分)。 コンパイラ単体だと、jが定数かどうかが判断できないのである(おそらく)。 はっきり言って、困ったちゃんである。 C++の規格書では#defineを使うなとか言っているくせに、 #defineでは簡単に出来ることがconstでは出来ない。 |