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 回答