我在MyClass
中有一个枚举作为类成员:
.h file:
private:
enum pattern { PAT_ZERO, PAT_SEQ, PAT_PIPE };
static enum pattern pattern;
我在一个函数中使用它:
.cpp file:
int MyClass::function(){
switch (pattern) {
case PAT_ZERO:
break;
它编译,但我收到链接器错误。
In function `MyClass::function()':
MyClass.cpp:(.text._ZN12MyClass11functionEP6threadPvj+0x120): undefined reference to `MyClass::pattern'
我似乎无法弄清楚为什么它是"未定义的引用"。
答案 0 :(得分:3)
静态数据成员通常需要定义,以及类中的声明,因此在源文件中添加一个:
enum MyClass::pattern MyClass::pattern = PAT_ZERO;
初始化程序是可选的 - 如果你将其删除,它将被初始化为零(即初始化为PAT_ZERO
)。