C ++中的静态结构

时间:2010-06-11 14:33:39

标签: c++ static struct const

我想定义一个结构,其中存储一些数学常量 这就是我现在所拥有的:

struct consts {
    //salt density kg/m3
   static const double gamma;
};

const double consts::gamma = 2350;

它工作正常,但会有超过10个浮点常量,所以我不想在它们之前写'static const'。并定义类似的东西:

static const struct consts {
    //salt density kg/m3
   double gamma;
};

const double consts::gamma = 2350;

看起来不错,但我收到了这些错误:
1.不允许成员函数重新声明 2.非静态数据成员可能不在其类别之外定义

我想知道是否有任何C ++方法可以做到这一点?

2 个答案:

答案 0 :(得分:30)

使用命名空间而不是尝试将结构化为命名空间。

namespace consts{
    const double gamma = 2350;
}

访问数据的方法也具有完全相同的synatx。例如:

double delta = 3 * consts::gamma;

答案 1 :(得分:11)

听起来你真的只想要一个命名空间:

namespace consts { 
    const double gamma = 2350.0;
    // ...
}

除非我尝试为其提供比consts更好的名称。