我想用一個公共枚舉和一個該枚舉類型的私有靜態成員變量編寫一個類。我可以初始化靜態變量的值,但是如果我嘗試在類成員函數中訪問它,我的代碼將不會鏈接。這裏有一個簡單的工作示例,將與編譯:類型枚舉的C++靜態成員變量將不會編譯
g++ -o TestClass.o TestClass.cpp
但後來當我嘗試編譯/中主源文件,鏈接失敗:
g++ -o test TestClass.o testmain.cpp
我得到的錯誤是:
Undefined symbols for architecture x86_64:
"TestClass::_enum", referenced from:
TestClass::printEnum() in TestClass.o
ld: symbol(s) not found for architecture x86_64
我使用運行OSX 10.7.5的Mac,使用gcc 4.2.1。
TestClass.h:
#ifndef TEST_CLASS_H
#define TEST_CLASS_H
class TestClass
{
public:
TestClass() {};
void printEnum();
typedef enum {A, B, C} MyEnum;
private:
static MyEnum _enum;
};
#endif
TestClass.cpp:
#include "TestClass.h"
#include <iostream>
using namespace std;
TestClass::MyEnum _enum = TestClass::A;
void TestClass::printEnum()
{
cout << "Value of enum: " << _enum << endl;
}
testmain.cpp:
#include "TestClass.h"
int main()
{
TestClass tc;
tc.printEnum();
}
Ohhhh ....當然。謝謝! – rainbowgoblin 2013-04-09 03:50:55