2016-10-30 60 views
0

我有这个错误,让我在所有的程序中都困扰着我,这可能只是我忽略了一些东西。VC++类。静态变量错误无法解析的外部符号

哪里出现该错误代码片段:

class myClass { 
private: 
    int x; 
public: 
    static int getX() { 
     x = 10; 
     return x; 
    } 
}; 

int main() { 
    cout << myClass::getX() << endl; 
    return 0; 
} 

我得到的错误说:

错误解析外部符号

什么causeing这或有什么不好我的代码?

+0

只对静态变量使用静态getter。 –

回答

0

里面你试图访问使用将无法正常工作的静态方法非静态变量的类。您可以将私有成员变量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; 
} 
+0

Thx。我acctualy在我做的例子中忘记了静态int(在我的程序中它是acctualy是一个静态int)。但我忘记了int myClass :: x = 0;在我的.cpp文件(我的头文件中的类),所以它仍然工作! – sladet

2

A staticfoo的成员函数没有与该类的对象关联(没有指针this)。

如何在没有对象的情况下访问foo的成员变量?除非他们自己是static,否则你不能。

您必须首先创建一个foo实例。

你的情况:

static int myClass::getX() { 
    myClass obj; 
    obj.x = 10; 
    return obj.x; 
} 
+0

我仍然收到错误消息。 – sladet

+0

@sladet在这种情况下,您收到的错误不是来自您发布的代码。用完整的错误信息编辑您的问题。无法解析的外部符号。那是哪个符号? – DeiDei

相关问题