我在所有的程序中都有这个错误,可能只是我忽略了一些东西。
出现错误的代码片段:
class myClass {
private:
int x;
public:
static int getX() {
x = 10;
return x;
}
};
int main() {
cout << myClass::getX() << endl;
return 0;
}
我得到的错误是:
外部符号
是什么原因导致这个或者我的代码有什么问题?
类foo
的static
成员函数没有关联到该类的对象(没有this
指针)。
如果没有对象,如何访问foo
的成员变量?除非他们自己是static
,否则你不能。
必须先创建foo
的实例
在你的例子中:
static int myClass::getX() {
myClass obj;
obj.x = 10;
return obj.x;
}
在一个类中,你试图使用不工作的静态方法访问非静态变量。您可以将私有成员变量x
转换为静态变量,并在类外部初始化它。然后您的示例看起来像:
#include <iostream>
class myClass {
private:
static int x;
public:
static int getX()
{
x = 10;
return x;
}
};
int myClass::x = 0;
int main() {
std::cout << myClass::getX() << std::endl;
return 0;
}