静态成员变量类内赋值

时间:2012-07-25 06:28:06

标签: c++ static-members

这是代码,

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数据成员分配值是否有效?

1 个答案:

答案 0 :(得分:3)

除非它是 const 整数类型(char,short,int,...),否则除了标题中的声明外,还必须在.cpp-File中定义静态成员。 / p>

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

//cpp:
XYZ * XYZ::instance;