c ++成员函数访问私有静态变量?

use*_*159 10 c++ static-members

可能重复:
对静态成员有未定义的引用是什么意思?

如果我在类声明之外实现函数,我不知道为什么我得到错误"未定义引用`TT :: i'"?这是代码..

class TT{
private:
    static int i;
public:
    void t();
};

void TT::t(){
    i=0;
}
Run Code Online (Sandbox Code Playgroud)

Stu*_*etz 19

它与您定义函数的位置无关,而是您没有定义静态成员变量,您只声明了它.你需要将它的定义放在类之外,例如

int TT::i;
Run Code Online (Sandbox Code Playgroud)


Roh*_*ews 5

未定义的对 `TT::i' 的引用

是因为您还没有在类外定义静态数据成员。所有静态数据成员都必须在使用它们之前在类外定义。

class TT
{
private:
    static int i;
public:
    void t();
};

void TT::t()
{
    i=0;
}
int TT::i=0; // define it outside the class. and if possible initialize 
Run Code Online (Sandbox Code Playgroud)