2013-02-27 2 views
0

두 가지 유형의 '동전'을 추가하기 위해 과부하가 걸린 친구 기능을 만들려고합니다. 구문을 올바르게 이해할 수없는 것 같습니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?friend 함수를 만들 때 오류가 발생했습니다. "동전에 이름을 지정하지 않았습니다."

coins operator+(const coins &num1, const coins &num2) 
{ 
    int dollars = num1.dollars + num2.dollars; 
    int cents = num1.cents + num2.cents; 
    return coins(dollars, cents); 
} 

친구 기능의 내 functions.h 선언 :

coins operator+(const coins &num1, const coins &num2); 

coins.h있는 친구를 선언 내 클래스 파일 :

friend coins operator+(coins); 

논리는 내 functions.cpp 파일에 구현 누구든지 올바른 방향으로 나를 가리킬 수 있습니까? 전체 코드를 게시해야합니까?

답변

1

동전 클래스 안에는 넣어해야합니다

friend coins operator+(const coins&, const coins&); 

(즉, 그것은 왼쪽 사이드 피연산자와 오른쪽 사이드 피연산자가 있습니다).

+0

아. 그걸 봤어야 했어. "pins.cpp : 6 : 0 : pa3functions.h : 17 : 2 : 오류 : '동전'이 유형을 지정하지 않음 파일이 pa3functions.cpp에서 포함됨 : 4 : 0 : pa3functions.h : 17 : 2 : 오류 : '동전'이 유형을 지정하지 않습니다. pa3functions.cpp : 17 : 1 : 오류 : '동전'이 유형을 지정하지 않습니다. " – Zane

+0

@Zane : pa3functions .cpp는'동전 '을 인식하지 못합니다. – ChiefTwoPencils

+0

고마워요 ... 왜 그걸 볼 수 없었는지 모르겠군요 ... – Zane

1

X does not name a type 오류 메시지 X does not name a type은 정의를 보지 못하거나 형식에 도달하기 전에 찾아보기에서 찾은 다른 항목이 있기 때문에 컴파일러가 X을 형식으로 인식하지 못하는 것 같습니다.

해당 머리글을 포함하고 있는지 확인하십시오. 연산자를 정의 할 때 범위를 벗어나는 범위에 다른 기호 coins이 없습니다. 또한 운영자가 작동하는 유형과 동일한 네임 스페이스에 연산자를 정의해야합니다.

+0

데이비드 감사합니다. 실제로 게시하기 전에 잠깐 생각났습니다. 이제 friend 함수를위한 클래스 생성자를 생성해야하는지 궁금하다. 새로운 오류 pa3functions.cpp가 계속 발생합니다. '동전 연산자 + (const 동전 & const 동전 &)': pa3functions.cpp : 21 : 32 : 오류 : 'coins :: coins (int &, int & – Zane

+0

@ Zane : 코드를 보지 않고 말하면 불가능합니다. 'operator +'구현은'return coins (lhs.value, rhs.value); '(또는 비슷하게 ... 기본적으로 두 개의 'int' 값으로 새로운'coins' 객체를 생성합니다) –

관련 문제