未定义的引用静态variablesc ++
嗨,我得到未定义的参考错误在下面的代码:
class Helloworld{ public: static int x; void foo(); }; void Helloworld::foo(){ Helloworld::x = 10; };
我不想要一个static
foo()
函数。 如何在一个类的非static
方法中访问一个类的static
variables?
我不想要一个
static
foo()
函数
那么, foo()
在你的类中是不是静态的,你不需要为了访问你的类的static
variables而使它成为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不是合适的初始值,则添加一个初始化程序。