static void function链接错误

时间:2014-03-11 03:40:00

标签: c++ class runtime-error static-members

我创建了一个小程序,它使用静态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;
}

2 个答案:

答案 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;