2014-02-15 2 views
-1

다음은 내 크롤러 헤더 파일의 일부입니다. 이 헤더 파일을 변경할 수 없습니다.헤더로 선언 된이 멤버를 함수로 어떻게 사용합니까?

private: 
    int top_position;   // The maximum position of the throttle 
    bool left_reverse;  // true if left direction is reverse 
    bool right_reverse;  // true if right direction is reverse 

그래서 구현 파일에 left_reverse을 구현하려고했습니다. 이것은 여전히 ​​스텁입니다.

bool left_reverse() 
{ 
    return(false); 
} 

그리고 다른 기능을 구현할 때 사용합니다. 나는 나에게 오류를 말하는 오류가 발생하지만

double Crawler::left_engine_speed() const 
{ 
    double speedpercentage; 
    double hundred(100.0); 
    speedpercentage = left_throttle.flow()*hundred; 
    if(left_reverse())  // <<< HERE IT IS 
    { 
     speedpercentage=speedpercentage*(-1); 
    } 

    return(speedpercentage); 
} 

: '((const Vehicles::Crawler*)this)->Vehicles::Crawler::left_reverse' cannot be used as a function. 누군가 여기 나에게 문제를 말할 수 있습니까?

+0

C 대신 C++을 작성한 이후로 꽤 오랜 시간이 걸렸지 만 'bool'이라는 의미는 아니며 'bool'을 반환하는 함수가 아닙니다. – 2rs2ts

+0

@ 2rs2ts bool 함수로 사용하려고합니다. 하지만 왜 내가 할 수 없는지 모르겠다. – user3312239

+0

함수 인 경우 bool left_reverse();로 선언 될 것이라고 생각합니다. – 2rs2ts

답변

0

함수가 다음

if(SomeNameSpace::left_reverse()) 

또는 여기

double Crawler::left_engine_speed() const 
{ 
    bool left_reverse(); 
    double speedpercentage; 
    double hundred(100.0); 
    speedpercentage = left_throttle.flow()*hundred; 
    if(left_reverse())  // <<< HERE IT IS 
    { 
     speedpercentage=speedpercentage*(-1); 
    } 

    return(speedpercentage); 
} 

간단한 예입니다

double Crawler::left_engine_speed() const 
{ 
    double speedpercentage; 
    double hundred(100.0); 
    speedpercentage = left_throttle.flow()*hundred; 
    if(::left_reverse())  // <<< HERE IT IS 
    { 
     speedpercentage=speedpercentage*(-1); 
    } 

    return(speedpercentage); 
} 

또는

쓰기 전역 이름 공간에서 예를 들어 어떤 이름 공간에 선언 된 경우

#include <iostream> 

class Crawler 
{ 
public: 
    double left_engine_speed() const; 
private: 
    bool right_reverse; 
}; 

bool left_reverse() { return true; } 

double Crawler::left_engine_speed() const 
{ 
    if (left_reverse()) return 1.0; 
    else return 0.0; 
} 

int main() 
{ 
    std::cout << Crawler().left_engine_speed() << std::endl; 

    return 0; 
} 
+0

도움을 주셔서 감사합니다.하지만 네임 스페이스를 앞에 붙이면 오류가 아니라는 메시지가 나타납니다. 네임 스페이스의 멤버 – user3312239

+0

@ user3312239 내 업데이트 된 게시물보기 –

1

이것은 기능이 아닙니다. 그것은 변수입니다. 함수 인 척하는 유용한 방법은 없습니다. 조금도. 기간.

관련 문제