现象
在一个类的头文件中,定义了一个static类型的类变量,直接编译,会报错。
例如,在IX.h中定义一个静态的Iy变量,如下:
c
class Ix
{
public:
static Iy* y;
}
编译时会报错,提示如下:
Ix.obj : error LNK2001: 无法解析的外部符号 "public: static class Iy * Ix::y" (?y@Ix@@2PAVIy@@A)
分析
原因是,在C++中,静态成员变量需要在类外进行定义和初始化。
解决方法
在Ix.cpp中初始化:
c
Iy* Ix::y = NULL;