2012-03-17 3 views
0

함수 정의 오류가 발생할C++ 연산자 GCC 오류 = 함수

const circularLinkedList<Tp>& operator=(const circularLinkedList<Tp>& otherList); 

라인 에러 메시지 .... nodeType에 시작 (327)을 일렬로

template <class Tp> 
nodeType<Tp>* circularLinkedList<Tp>&::operator=(const circularLinkedList<Tp>& otherList) 

오류를 말한다 GCC의 컴파일러의 메시지는 다음과 같습니다

circularLinkedList.h:327: error: invalid declarator before â&â token 
circularLinkedList.h:327: error: expected initializer before â&â token 

나는이 방법 somewh을 정의 나가에 구문 오류의 일종을 만든 가정 오히려. 어떻게 고칠 것인가? 감사.

+0

단순히이'&'이상한 인코딩 따옴표에서 토큰'A & A' 토큰인가? –

+0

@ MrLister - 그렇게 생각합니다. 복사/붙여 넣기 문제 일 수 있습니다. –

+2

& 이전 :: 연산자가 잘못 되었나요? – abresas

답변

2

좀 더 많은 코드를 게시 할 수 있습니까? nodeType이 무엇인지 설명 할 수 있습니까? 함수 정의 같은

다음과 같습니다

template <class Tp> 
nodeType<Tp>* circularLinkedList<Tp>&::operator=(const circularLinkedList<Tp>& otherList) 

그러나, 한 가지에 대한 선언이는 const circularLinkedList<Tp>& 반환 말한다. 또한 :: 앞에 &을 갖고 싶지 않습니다. 형식의 이름이어야하며 포인터 또는 해당 형식의 변수에 대한 참조가 필요하지 않습니다. 당신이 그 행동을 원한다면 당신은 프록시 클래스를 사용해야합니다. 거의 변함없이 첫 번째 코드 블록에서 return *this;

+0

이것은 함수 정의이며 * this를 반환합니다. 그러나 실제로 당신은 그 라인으로 그것을 고쳤습니다. 함수 정의를 얻는 방법을 잘 모르겠다. 대답 할 때까지 제대로 작동하지 않았다. 감사! – rfmas3

0

로 끝나야합니다

template <class Tp> 
const circularLinkedList<Tp>& circularLinkedList<Tp>::operator=(const circularLinkedList<Tp>& other) 

, 당신은 메소드 선언이 아닌 함수 정의를 보여

그래서 같은 것이 있어야한다. 두 번째 코드 블록에는 메서드 정의의 머리글이 표시됩니다.

방법 선언 : const circularLinkedList<Tp>&

방법 정의 반환 값 : 반환 nodeType<Tp>*.

선언 한 메서드를 정의하지 않았습니다. 선언하지 않은 메소드를 정의하고 있습니다.

정의의 헤더는 있어야한다 :

const circularLinkedList<Tp>& circularLinkedList<Tp>::operator=(const circularLinkedList<Tp>& otherList)