静态const变量定义被忽略,而是初始化为0

时间:2018-01-13 01:38:47

标签: c++

我需要在类中使用一长串的静态consts。因此,我将它们放入一个结构中并定义我的类来继承该结构的成员变量,而不是使类定义混乱:

/*The following code is all in the same header file in the order shown*/

struct constants{
     static const double a1, a2, a3, .... ;
};

const double constants::a1 = 142314321.6536;
const double constants::a2 = 652453254.1343;
const double constants::a3 = 652134324.1234;
...(etc).

class C : constants {
    //class definition...
    void myFunction();
};

void C::myFunction() {
    double a = a1*a2 ...;
    ...
}

我的代码编译时没有错误,运行没有任何错误。但是,我得到了无意义的结果,并发现当我在调试器中运行我的代码时,我的所有静态const值都为零。

正在发生的事情是将这些变量初始化为0但是也没有按照定义变量的方式抛出错误?

编辑:我应该提一下,我防止多个头文件声明的方法是在每个头文件的顶部使用#pragma一次。

0 个答案:

没有答案