你好我得到未定义引用错误在下面的代码:
class Helloworld{
public:
static int x;
void foo();
};
void Helloworld::foo(){
Helloworld::x = 10;
};
我不想要一个static
foo()
函数。 如何访问static
类的变量在非static
类的方法?
你好我得到未定义引用错误在下面的代码:
class Helloworld{
public:
static int x;
void foo();
};
void Helloworld::foo(){
Helloworld::x = 10;
};
我不想要一个static
foo()
函数。 如何访问static
类的变量在非static
类的方法?
我不想要一个
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;
};
该代码是正确的,但不完整。 这个类Helloworld
有静态数据成员的声明 x
,但没有数据成员的定义 。 Somehwere在源代码中,你需要
int Helloworld::x;
或者,如果0是不恰当的初始值,添加的初始化。