class Test
{
private:
static int i;
public:
static void foo()
{
i = 10;
}
static int geti(){ return i; }
};
int _tmain(int argc, _TCHAR* argv[])
{
Test::foo();
std::cout << Test::geti();
return 0;
}
这是一个简单的测试,我认为我的程序中的静态使用是错误的。因为我总是得到“未解决的外部符号i”。为什么是这样 ?
答案 0 :(得分:0)
您必须在类定义之外定义 static
成员变量:
int Test::i=10; //or any value or just the definition will do.
在课堂上你只是声明,而不是定义。没有定义,链接器将无法找到它并将显示未解析的外部符号。
由于One Definition Rule和C ++的编译模型,类中的 static
成员变量需要这种特殊处理。