0

これがコードです、

class A {
public:
    static A *get_a()
    {
        if(_pa == 0)
            _pa = new A;
        return _pa;
    }

private:
    static A *_pa = 0;  //cannot compile
};

上記のコードで、_paの定義をクラス外に移動すると、

A * A::_pa = 0;  //can compile

私の問題は、static A *_pa = 0クラス本体の中には単なる宣言であり、定義ではないということですよね?

staticさらに、クラス内のデータメンバーに値を割り当てることは有効ですか?

4

1 に答える 1

3

const整数型(char、short、int、...)でない限り、ヘッダーの宣言に加えて、.cpp-Fileで静的メンバーを定義する必要があります。

header:
class XYZ {
  static XYZ * instance;
};

//cpp:
XYZ * XYZ::instance;
于 2012-07-25T06:33:34.967 に答える