我创建了一个小程序,它使用静态void函数来获取数字,使用另一个静态void函数来显示数字。但是当应用程序运行时,它会给我这个错误
错误1错误LNK2001:未解析的外部符号“private:static int 事情::我“(?i @ Thing @@ 0HA)
这是我的代码
#include <iostream>
using namespace std;
class Thing{
private:
static int i;
public:
static void set_i(int h){
i = h;
}
static void print_i(){
cout << "The value of i is: " << i << endl;
}
};
int main(){
Thing::set_i(25);
Thing::print_i();
system("pause");
return 0;
}
答案 0 :(得分:3)
您应该定义Thing::i
而不是仅仅声明它:
class Thing{
private:
static int i; // this is only a declaration
...
}
int Thing::i = 0; // this is a definition
int main(){
...
}
有关声明和定义之间差异的更多详细信息,请参阅What is the difference between a definition and a declaration? 这是一个更具静态性的问题:static variable in the class declaration or definition?
答案 1 :(得分:1)
需要在类外部定义静态成员。
static int i; // This is just declaration.
在您的代码中添加以下内容。
int Thing::i;