私の知る限り、すべての整数型はヘッダー ファイルで初期化できます。そのため、ヘッダーの 1 つでこの種の宣言が正しいと感じました (foo.h と呼びましょう)。
class Foo {
public:
static const unsigned int DEFAULT = 0xffffffff;
...
};
そして、リリースモードでコンパイルおよびリンクすると、うまくいきました。ただし、デバッグ モードでコードをコンパイルすると、次のエラーが発生しました。
undefined reference to `Bar::Foo::DEFAULT'
collect2: ld returned 1 exit status
初期化を foo.cpp に移動すると、問題は解決しました。
const unsigned int Foo::DEFAULT = 0xffffffff;
しかし、私はその理由を理解していません。誰か推測できますか?
(Ubuntuでgcc 4.2.4を使用しています)