gpt4 book ai didi

c++ - 头文件中的类声明和静态变量

转载 作者:行者123 更新时间:2023-11-28 00:54:58 24 4
gpt4 key购买 nike

菜鸟问题,但想了解以下内容:

假设我有一个多文件项目。我在头文件中指定了一个,以便在项目中的所有文件之间共享,我这样写:static int test = 0; 下一行:static const int MAX = 4;

由于 one 定义规则,第一个在尝试编译时会出错。但是第二个将编译没有错误。为什么?

据我了解,两者具有相同的属性:整个执行存储持续时间、类范围和无链接。

有什么帮助吗?

编辑:测试 header 中的外部常量声明:extern const int MAX = 4; 以强制外部链接产生预期的错误。所以我不明白为什么变量会给我错误,而常量却不会。

最佳答案

尝试

static const int test = 0;

我有时会注意到头文件中静态常量变量的立即初始化会导致编译器错误。您始终可以在 header 中使用声明

class MyClass
{
// ...
static const int test;
// ...
}

并在对应的.cpp文件中初始化

const int MyClass::test = 0;

除了 int 之外,这应该也能与任何其他类型一起正常工作。

关于c++ - 头文件中的类声明和静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12010630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com