使用静态类变量时,您可能会遇到 C 中的“对静态变量的未定义引用”错误。本文将探讨该问题并提供解决方案。
以以下代码为例:
class Helloworld { public: static int x; void foo(); }; void Helloworld::foo() { Helloworld::x = 10; }
编译此代码时,您可能会收到错误“undefined reference to 'Helloworld” ::x'”。这是因为您没有为静态变量 x 提供定义。
在 C 中,静态类变量必须在类定义之外定义。只需在全局范围内添加 x 的定义即可解决错误:
int Helloworld::x; // Define the static variable
您可以使用任何适当的值初始化 x。如果没有提供初始化器,则默认为零初始化。
因此,修改后的代码将如下所示:
class Helloworld { public: static int x; void foo(); }; int Helloworld::x = 0; // Initialize the static variable void Helloworld::foo() { Helloworld::x = 10; }
现在,编译器将能够正确定位x 的定义并解决错误。请记住,即使 foo() 函数不是静态的,它仍然可以访问 Helloworld 类的静态变量 x。
以上是为什么我在 C 中收到'未定义的静态变量引用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!