首页 >后端开发 >C++ >为什么在 C 中访问静态变量时会出现'未定义的静态变量引用”错误?

为什么在 C 中访问静态变量时会出现'未定义的静态变量引用”错误?

Susan Sarandon
Susan Sarandon原创
2024-12-30 01:12:16421浏览

Why Do I Get

C 中的静态变量引用问题

在 C 中,在非静态类方法中访问静态变量可能会导致编译错误,如果 static变量没有正确定义。遇到的一个常见错误是“对静态变量的未定义引用。”

问题

考虑以下代码片段:

class Helloworld {
  public:
    static int x;
    void foo();
};

void Helloworld::foo() {
  Helloworld::x = 10;
}

此代码旨在从非静态方法 foo() 访问静态变量 x。但是,编译此代码可能会导致“对静态变量的未定义引用”错误,因为静态变量 x 缺少定义。

解决方案

解决方案是在类定义之外提供静态变量 x 的定义。该定义可以添加在类定义之后,如下所示:

class Helloworld {
  public:
    static int x;
    void foo();
};

// Definition of static variable x
int Helloworld::x = 0; // Initialize x to 0 (or any appropriate value)

void Helloworld::foo() {
  Helloworld::x = 10;
}

通过在类定义之外定义静态变量x,编译器可以为x定位并分配内存。此外,将静态变量初始化为特定值或在没有初始化器的情况下允许其零初始化也很重要。

通过这些修改,代码将成功编译和执行,使您能够从 Helloworld 类的非静态成员函数访问静态变量 x。

以上是为什么在 C 中访问静态变量时会出现'未定义的静态变量引用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn