【发布时间】:2010-09-27 02:00:51
【问题描述】:
我注意到 C++ 不会编译以下内容:
class No_Good {
static double const d = 1.0;
};
不过,它会很高兴地允许将 double 更改为 int、unsigned 或任何整数类型的变体:
class Happy_Times {
static unsigned const u = 1;
};
我的解决方案是将其更改为:
class Now_Good {
static double d() { return 1.0; }
};
并认为编译器将足够聪明,可以在必要时内联...但这让我很好奇。
为什么 C++ 设计者允许我静态 const 一个 int 或 unsigned,而不是一个 double?
编辑:我在 Windows XP 上使用 Visual Studio 7.1 (.net 2003)。
编辑2:
问题已得到解答,但为了完成,我看到的错误:
error C2864: 'd' : only const static integral data members can be initialized inside a class or struct
【问题讨论】:
-
什么编译器/平台,或者你看到它的倍数?
-
您在 VS7.1 中收到什么错误消息?
标签: c++