无法访问静态成员 ->未解析的外部符号 i

Unable to access static member -> unresolved external symbol i

本文关键字:外部 符号 访问 静态成员 gt      更新时间:2023-10-16
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 "为什么会这样?

您必须在类定义之外定义 static成员变量:

int Test::i=10; //or any value or just the definition will do.
在类中,你只是声明,而不是定义。如果没有定义,链接器将无法找到它,并且将显示未解析的外部符号。 类中的

static成员变量需要这种特殊的处理,这是由于c++的"一个定义规则"和编译模型。