您好我在以下代码中收到未定义的引用错误:
class Helloworld{
public:
static int x;
void foo();
};
void Helloworld::foo(){
Helloworld::x = 10;
};
我不想要static
foo()
功能。如何在类的非static
方法中访问类的static
变量?
答案 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();
};