[ < ] | [ > ] | [ << ] | [ 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.