【问题标题】:Static struct in C++C++中的静态结构
【发布时间】:2011-03-02 16:56:27
【问题描述】:

我想定义一个结构,其中将存储一些数学常数。
这是我现在得到的:

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++ 方法可以做到这一点?

【问题讨论】:

  • 10 根本不算多。只需复制粘贴static const double 部分。
  • 我确信在代码中复制粘贴是最大的罪恶 :)
  • logic 的复制粘贴是个大恶。 static const double 的复制粘贴……没那么多。如果需要 10 个 const,则需要声明它们。
  • 复制粘贴函数或您不理解的代码块显然是邪恶的。但是,如果您只需输入 10 次 static const double,而您又懒得做不到,那为什么不复制粘贴呢?

标签: c++ static struct constants


【解决方案1】:

使用命名空间而不是试图将结构变成命名空间。

namespace consts{
    const double gamma = 2350;
}

访问数据的方法也有完全相同的语法。比如:

double delta = 3 * consts::gamma;

【讨论】:

  • 对不起,我盖过了你的零钱 :(
  • @David 没问题,感谢您的编辑。我几乎错过了我忘记在其中放置类型的事实。
  • 谢谢,这正是我想要的:)
  • 谢谢! C++ 新手,感谢您在命名空间方面的领导
【解决方案2】:

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

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

除了我想为它想出一个比consts 更好的名字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多