| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
クラスに static のデータメンバがある場合、その static なメンバを 宣言するだけでは充分でない。それを定義もしなければならない。 以下に例を示す。
class Foo
{
…
void method();
static int bar;
};
|
この宣言でなされることは、クラス Foo に Foo::bar という
名前の int があること、Foo::method という名前のメンバ
関数があることだけである。
だが、依然として、method と bar の 両方をどこかで
定義する必要がある。
ANSI 規格のドラフトに従うなら、初期化子を一個、ある一つの(そして
一つだけの)ソースファイルで、以下のように提供しなければならない。
int Foo::bar = 0; |
他の C++ コンパイラは、この規格の動作を正しく実装していない可能性がある。
その結果、そのようなコンパイラの一つから g++ に
移行したときに、実際に正しく動くように見えたプログラムが規格に
適合しないということが見つかるかもしれない。
g++ は、定義のない static のデータメンバは、未定義のシンボルとして
報告する。
This document was generated
using texi2html 1.78.