未定义的静态变量c ++引用

时间:2013-04-29 17:23:42

标签: c++ static

您好我在以下代码中收到未定义的引用错误:

class Helloworld{
  public:
     static int x;
     void foo();
};
void Helloworld::foo(){
     Helloworld::x = 10;
};

我不想要static foo()功能。如何在类的非static方法中访问类的static变量?

3 个答案:

答案 0 :(得分:81)

  

我不想要static foo()函数

好吧,foo()在您的课程中是静态的,并且您需要将其设为static才能访问{{ 1}}你班级的变量。

您需要做的只是为静态成员变量提供定义

static

答案 1 :(得分:48)

代码是正确的,但不完整。班级Helloworld的静态数据成员x声明,但该数据成员没有定义。您需要的源代码中包含

int Helloworld::x;

或者,如果0不是合适的初始值,则添加初始值。

答案 2 :(得分:5)

旧问题,但想添加c++17功能;

c++17起,您可以声明static members inline,并且可以在initializer的正文中用class进行定义。不需要out-of-class定义;

class Helloworld{
  public:
     inline static int x = 10;
     void foo();
};