我认为这是一个老问题,但我不明白。
我有一个头文件 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/