未定义的参照静态变量c ++(Undefined reference to static varia

2019-09-01 09:36发布

你好我得到未定义引用错误在下面的代码:

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

我不想要一个static foo()函数。 如何访问static类的变量在非static类的方法?

Answer 1:

我不想要一个static foo()函数

那么, foo()不是在你的类静态的,你并不需要,使其static ,以便访问static类的变量。

什么,你需要做的仅仅是为您的静态成员变量提供了一个定义

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

int Helloworld::x = 0; // Or whatever is the most appropriate value
                       // for initializing x. Notice, that the
                       // initializer is not required: if absent,
                       // x will be zero-initialized.

void Helloworld::foo() {
     Helloworld::x = 10;
};


Answer 2:

该代码是正确的,但不完整。 这个类Helloworld有静态数据成员的声明 x ,但没有数据成员的定义 。 Somehwere在源代码中,你需要

int Helloworld::x;

或者,如果0是不恰当的初始值,添加的初始化。



文章来源: Undefined reference to static variable c++
标签: c++ static