vc++类.静态变量错误,外部符号无法解析



我在所有的程序中都有这个错误,可能只是我忽略了一些东西。

出现错误的代码片段:

class myClass {
private:
    int x;
public:
    static int getX() {
        x = 10;
        return x;
    }
};
int main() {
    cout << myClass::getX() << endl;
    return 0;
}

我得到的错误是:

外部符号

是什么原因导致这个或者我的代码有什么问题?

foostatic成员函数没有关联到该类的对象(没有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;
}

最新更新