2013-01-10 114 views
0

在我的类声明的public部分,我有这样的:编译器错误变量

static float m_screenWidth; 
static float m_screenHeight; 

然后我就可以将它们设置为任何我想要在类的构造函数或其他地方,但是,编译失败当我使用他们,说:

Undefined symbols for architecture

这是在我试图访问这些成员的任何行指出。在类方法中,我通过名称访问它们。在非成员函数中,我使用className::前缀访问它们。没关系,他们没有享受。有什么建议?

值得注意的是它们是而不是得到“未声明”的错误,所以它们在一定程度上得到了认可。

+1

“未定义符号”是一个链接器,而不是编译器错误。你如何真正定义它们? –

+0

[**看看这个问题**](http://stackoverflow.com/questions/5818270/undefined-symbols-for-architecture-i386) –

回答

4

该错误消息是链接器失败消息,而不是编译器失败消息。它表明它无法找到变量的定义。

public部分,他们是声明。他们必须定义,恰好一次,class定义之外:

float className::m_screenWidth; 
float className::m_screenHeight; 
2

宣布他们在头文件。您也可以.cpp文件中定义他们的地方:

float MyClass::m_screenWidth; 
float MyClass::m_screenHeight; 

这将告诉编译器实际上预留空间,并为这些静态变量符号。