2013-05-02 5 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^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); 
    } 
} 

을하고 싶지? 도와 주셔서 감사합니다

V.

답변

1

사용 이니셜 라이저 목록의 많은 :

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

선택적 기능에 조건부 표현을 포장. – dyp

+0

또는 난독 화가있는 경우 : '2 * isRightFoot - 1' (첫 번째 벡터의 두 번째 인수). –

+0

본문은 또한 할당되지 않고 초기화되어야합니다., body (new Body()) –