2013-05-02 40 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