c++ - 类中的静态常量

标签 c++

我认为这是一个老问题,但我不明白。

我有一个头文件 routines.h,它的函数文件 routines.cpp 和主文件 main.cpp。

在标题中有:

class myclass{
public:
static const double a;
void mymethod();
};

const double myclass::a=0.0;

routines.cpp 包含:#include"routines.h" 然后定义方法。

main.cpp 还有 #include"routines.h"

这个设置给出了一个链接错误:它已经被定义了。

public: static double const myclass::a" (?a148@myclass@@2NB) already defined in DBFLOWPAR2.obj

DBFLOWPAR2 是我的主文件。

如果我在 routines.h 中定义方法,它工作正常,但我不喜欢这样。 还有什么可能?我不关心变量是如何定义的,我只想能够访问 myclass.a 并在其中找到正确的值。

最佳答案

你应该在cpp文件中定义静态变量。
移动,

 const double myclass::a=0.0;

到您的 cpp 文件。

在头文件中定义 a 会在每个 Translation Unit 中创建变量的拷贝包含 header 的位置。

关于c++ - 类中的静态常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9520025/

相关文章:

c++ - ESP32-AsyncUDP 自带的 udp.onPacket 处理函数

c++ - Windows Mobile 在 `new` 失败时返回 0

c++ - 创建一个修改类 const 之外的数据的方法是一种好习惯吗?

c++ - 调用默认构造函数

c++ - 使用数组实现四叉树

c++ - Caesar Cipher C++(数组和指针)

C++ new 运算符继承和内联数据结构

Python 调用 boost .so 文件库未加载错误

c++ - 如何明智地决定抛出哪个标准异常?

c++ - 如何从 qt-everywhere-opensource-src-5.6.1.tar.gz(或更高版本)构建 Qt 5.6.1 *.dll 文件?