使用来自 class A 的 const 值初始化 class B?

Initialize class B with a const value from class A?

如何使用 class A 中的常量值构造 class B,如下所示:

class A
{
public:
   A( );
private:
   B b_;
   const float PARAM_ = 7.7;
}

class B
{
    B(float param);
}

A::A() : b_( PARAM_ )
{

}

当创建 b_ 而不是预期的 7.7 时,我在上面的 PARAM 中得到垃圾值。正确的方法是什么?

如果它适合您的用途,您可以将 const 设为静态。 出现问题是因为当您尝试在 b 的构造函数中使用它时,您的参数的非常量版本不会被初始化。

作为静态的,它会被更早地初始化。

问题是在 C++ 中,非静态成员是按声明顺序初始化的。 b_PARAM_之前声明,所以当你在成员初始化列表中写b_( PARAM_ )时,b_被初始化为垃圾值,然后 PARAM_ 初始化为 7.7。为避免这种情况,将 PARAM_ 的声明移动到 b_.

之前