C++ c++;成员函数访问私有静态变量?
可能重复:C++ c++;成员函数访问私有静态变量?,c++,static-members,C++,Static Members,可能重复: 我不知道如果我在类声明之外实现函数,为什么会出现错误“未定义对`TT::I'的引用”? 这是密码 class TT{ private: static int i; public: void t(); }; void TT::t(){ i=0; } 这与定义函数的位置无关,只是没有定义静态成员变量,只是声明了它。你需要把它的定义放在类之外,例如 int TT::i; 静态变量保存在与类的任何实例不同的内存部分。这是因为它们不是任何类实例的一部分 下面的代
我不知道如果我在类声明之外实现函数,为什么会出现错误“未定义对`TT::I'的引用”? 这是密码
class TT{
private:
static int i;
public:
void t();
};
void TT::t(){
i=0;
}
这与定义函数的位置无关,只是没有定义静态成员变量,只是声明了它。你需要把它的定义放在类之外,例如
int TT::i;
静态变量保存在与类的任何实例不同的内存部分。这是因为它们不是任何类实例的一部分 下面的代码是编译的,因为从未调用函数t
class TT
{
private:
static int i;
public:
void t()
{
i=0;
}
};
int main(int argc, char *argv[])
{
qWarning() << "hi";
TT * t = new TT();
//t->t();
return 0;
}
功能示例,定义了静态:
class TT
{
private:
static int i;
public:
void t();
};
int TT::i = 0;
void TT::t(){
i=0;
}
对'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
+我删除了我的回复,因为我意识到你搞定了。他得到的“未定义引用”错误是链接器错误,而不是编译器错误。绝对正确。我有一个坏习惯,就是把“编译输出”控制台中出现的任何东西都称为编译器错误。这是一个更完整的答案!:D
class TT
{
private:
static int i;
public:
void t();
};
int TT::i = 0;
void TT::t(){
i=0;
}
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