0

public我的班级声明部分,我有这个:

static float m_screenWidth;
static float m_screenHeight;

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

Undefined symbols for architecture

这在我尝试访问这些成员的任何行上都有说明。在类方法中,我按名称访问它们。在非成员函数中,我使用className::前缀访问它们。没关系,他们不喜欢。有什么建议吗?

值得注意的是,它们没有得到“未声明”的错误,因此它们在某种程度上得到了认可。

4

2 回答 2

4

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

在该public部分中,它们是声明。它们必须在定义之外只定义一次class

float className::m_screenWidth;
float className::m_screenHeight;
于 2013-01-10T14:16:15.637 回答
2

您在头文件中声明了它们。您还必须在某处的文件中定义它们:.cpp

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

这将告诉编译器实际保留空间并为这些静态变量创建符号。

于 2013-01-10T14:16:57.257 回答