静态类变量的编译错误

Compiler error on static class variable

本文关键字:编译 错误 类变量 静态类 静态      更新时间:2023-10-16

在我的类声明的public部分,我有这个:

static float m_screenWidth;
static float m_screenHeight;

然后我可以在类构造函数或其他地方将它们设置为我想要的任何值,然而,当我使用它们时,编译器会出错,说:

Undefined symbols for architecture

在我试图访问这些成员的任何行上都要注意。在类方法中,我通过名称访问它们。在非成员函数中,我用className::前缀访问它们。没关系,他们不喜欢。任何建议吗?

值得注意的是,它们没有得到"未声明的"错误,因此它们在某种程度上是可识别的。

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

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

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

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

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

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