未定义的引用静态variablesc ++

嗨,我得到未定义的参考错误在下面的代码:

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

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

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

那么, foo()在你的类中是不是静态的,你不需要为了访问你的类的staticvariables而使它成为static

你需要做的只是为你的静态成员variables提供一个定义

 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; }; 

代码是正确的,但不完整。 Helloworld声明了它的静态数据成员x ,但没有定义该数据成员。 有些需要你的源代码

 int Helloworld::x; 

或者,如果0不是合适的初始值,则添加一个初始化程序。