这是代码,
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
数据成员分配值是否有效?
答案 0 :(得分:3)
除非它是 const 整数类型(char,short,int,...),否则除了标题中的声明外,还必须在.cpp-File中定义静态成员。 / p>
header:
class XYZ {
static XYZ * instance;
};
//cpp:
XYZ * XYZ::instance;