2013-05-02 62 views
1

我有一个关于C++中const关键字的问题。 我有以下类:在头文件中定义const对象

Foot.h

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

在哪里矢量是实现基本R 1 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

使用初始化列表:

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

可选包中的函数的条件表达式。 – dyp 2013-05-02 15:27:47

+0

或者如果您进入模糊处理:'2 * isRightFoot - 1'(用于第一个向量的第二个参数)。 – 2013-05-02 15:39:26

+0

身体也应该初始化而不是分配:body(new Body()) – 2015-01-23 17:39:18