首页 > 后端开发 > C++ > 为什么我在 C 中收到'未定义的静态变量引用”错误?

为什么我在 C 中收到'未定义的静态变量引用”错误?

Patricia Arquette
发布: 2024-12-15 11:46:10
原创
955 人浏览过

Why Am I Getting an

解决 C 中的“对静态变量的未定义引用”错误

使用静态类变量时,您可能会遇到 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板