我无法在类中初始化常量,其中一个常量取决于其他常量值。
class foo {
private:
const int secondConst;
const int firstConst;
public:
foo(int x) :
firstConst(x),
secondConst(firstConst*3)
{
// constructor code here....
}
}
secondConst是垃圾值, 我该如何正确初始化它? 也许在C ++中,一个常量在初始化时不能依赖其他常量?
我编辑了我的帖子。问题实际上是在原始代码中我切换了声明它们的const字段。
答案 0 :(得分:5)
你的样本适合我。但是,如果我将订单更改为
private:
const int secondConst;
const int firstConst;
然后secondConst
变得垃圾。原因是数据成员按声明的顺序初始化,而不是按成员初始化列表中出现的顺序初始化。
来自标准:
然后,按照在类定义中声明的顺序初始化非静态数据成员 (无论 mem-initializers 的顺序如何)。