在头文件中定义const对象

时间:2013-05-02 15:24:32

标签: c++ const

我对C ++中的const关键字有疑问。 我有以下课程:

Foot.h

class Foot
{
public:
   Foot (bool isRightFoot);
   const Vector internFootAxis;
   const Vector externFootAxis;
   bool isRightFoot;
private:
   Body* body;
}

其中Vector是实现基本R ^ 3向量运算的类。 internFootAxis表示从脚的中心(表示为Body对象 - 这是表示物理对象的类)到大脚趾的向量。 externFootAxis表示从脚的中心到小脚趾的矢量。

我希望internFootAxis和externFootAxis的初始值为const(因为我在图形显示主循环中的每次迭代中将运算符应用于那些更改向量内部状态的向量)。不幸的是,internFootAxis(t = 0)和externFootAxis(t = 0)的值取决于我是在考虑左脚还是右脚,因此我需要在Foot的构造函数中声明它们的值,而不是在类之外。

从技术上讲,我想做以下

Foot.cpp

Foot::Foot(bool isRightFoot)
{
body = new Body();
     if (isRightFoot)
     {
         internFootAxis(1,1,0);
         externFootAxis(1,-1,0);
     }
     else
     {
         internFootAxis(1,-1,0);
         externFootAxis(1,1,0);
     }
}

有一种简单的方法吗? 非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

使用初始化列表:

Foot::Foot(bool isRightFoot)
  : internFootAxis( 1, isRightFoot ? 1 : -1, 0)
  , externFootAxis( 1, isRightFoot ? -1 : 1, 0)
{
    body = new Body();
}