2010-04-20 9 views
1

내 특정 코드 문제를 해결할 수있는 항목이 없습니다.bool 함수를 호출하는 방법

클래스에 bool 함수가 있습니다. bool 함수의 이름은 다음과 같습니다.

bool Triplet::operator ==(const Triplet& operand)const { 
    if((data[0] == operand.data[0]) && 
      (data[1] == operand.data[1]) && 
      (data[2] == operand.data[2])) 
     return true; 
     ... 

메인에서 호출하려고하는데 문제가 발생했습니다. 분명히 문언에 아무 것도 남겨 두지 않으면 나는 약을 너무 적게 먹었고 함수의 전체 표현을 사용하려고하면 세미콜론이 필요하다는 오류가 발생하지만 이미 전화가 끝날 때마다 세미 콜론을 사용하므로 다른 점이 잘못되어 단순히 잘못된 점을 파악할 수 없다는 것을 알고 있습니다! 도움이 될 것입니다.

미리 감사드립니다.

+6

작동하지 않는 코드를 게시하면 실제 컴파일러 오류가 도움이됩니다. –

+0

예, 대답은 MAIN 아래 답변 중 하나입니다. 여기서 함수 아래 부분 코드이다 BOOL 삼중 :: 연산자 == (CONST 삼중 피연산자) CONST { 경우 ((데이터 [0] == operand.data [0]) && (데이터 [ 1] == operand.data [1]) && (data [2] == operand.data [2])) return true; .... 하지만 내 주장은 다음과 같습니다. 위의 내용을 메인에서 호출하려고합니다. 나는 여러분 모두에게서받은 응답 중 일부를 시도해보고 위의 코드에서 작동하는지 확인합니다. 도움을 주셔서 감사합니다. – Gerri

+3

'main'의 코드가 작동하지 않으므로 게시해야하는 코드가 있습니다. 그것이 무엇을 요구했는지입니다. – Troubadour

답변

8
는 정상 연산자의 동작을 변경할 수 있도록 C++ 연산자 오버로드는,이 설계되어있다

:

Triplet a, b; 
if (a == b) // calls Triplet::operator==() 

당신은 정말, 당신은 이름으로 연산자를 호출 할 수 있습니다하려면 :

if (a.operator==(b)) 
+7

'a.operator == (b)'일 것만 제외하고. – Troubadour

+0

감사합니다. 저는 Triplet a를 사용했습니다. 삼중 항 b; 등등.답변 해 주셔서 대단히 감사합니다. 나는 정말로 그것을 바르게 평가했다! – Gerri

+0

@Troubadour : D' oh! 깨어 난 후 10 분을 코드하도록 가르쳐주세요 :) –

11

당신은 ==를 사용하여 호출 할 수 있습니다 (즉, 연산자 오버로딩이하는 무엇, 그것은 운영자의 의미 과부하) :

if (a.operator==(b)) //< also calls your operator== 
:

Triplet a; 
Triplet b; 

if (a == b) //< calls your operator== 

당신은 또한 함수 호출 구문을 사용하여 호출 할 수 있습니다

하지만 일반적으로 원하지 않거나해야 할 필요는 없습니다.

어떤 이유로 인해 인수에서 추론 할 수없는 템플릿 매개 변수가있는 연산자 템플릿이있는 경우 (operator==은 드물지만, operator[]에 사용 된 템플릿을 보았습니다. 전에).

+0

감사합니다. 저는 Triplet a를 사용했습니다. 삼중 항 b; 등등. 답변 해 주셔서 대단히 감사합니다. 나는 정말로 그것을 바르게 평가했다! – Gerri

2

bool은 반환 유형입니다. 함수가 호출되는 것과는 아무런 관련이 없습니다. James의 예에서와 같이이 함수는 연산자이므로 일반적인 구문과 같이 연산자를 사용하여 호출합니다.

+0

고마워, 나는 Triplet a; 삼중 항 b; 등등. 답변 해 주셔서 대단히 감사합니다. 나는 정말로 그것을 바르게 평가했다! – Gerri

관련 문제