[완료][C++] 왜 연산자를 호출하지 못할까요?
글쓴이: khnet / 작성시간: 목, 2011/12/22 - 5:14오후
template <typename T> class List { public: class Node { friend class List; template <typename _T> friend typename List<_T>::Node* operator +(const int index, const typename List<_T>::Node &node); public: T data; Node *previous, *next; public: Node() : data(0), previous(NULL), next(NULL) {} ......(생략) }; ......(생략) }; template <typename T> typename List<T>::Node* operator +(const int index, const typename List<T>::Node &node) { int i; typename List<T>::Node *current_node; for(i=0,current_node=&node;(current_node!=NULL)&&(i<index);++i) current_node=current_node->next; return current_node; } int main() { List<double> *a=List<double>::Create_a_List(); a->Add_front(123.123); List<double>::Node *node=a->Add_Node(200.0); printf("%g\n", node->data); node=--(*node); printf("%g\n", node->data); node=++(*node); printf("%g\n", node->data); node=*a>>0; printf("%g\n", node->data); node=1+(*node); <======== 20번 line printf("%g\n", node->data); List<double>::Destroy_a_List(a); }
위의 코드를 컴파일 해보면 다음과 같은 에러가 나옵니다.
Ttest.cpp: In function 'int main()'
Ttest.cpp:20: error: no match for 'operator+' in '1 + * node'
20번째 줄에서 이런 에러가 뜨는데, 정의된 + 연산자를 찾지 못하는 것 같은데 뭐가 잘못된건지 모르겠네요
컴파일러는 g++입니다.
고수님들 부디 도움 부탁드려요 ㅜㅜ
Forums:
http://stackoverflow.com/ques
http://stackoverflow.com/questions/6568645/operatorostream-x-for-class-x-nested-in-a-class-template
참고하세요.
감사합니다!
감사합니다! 덕분에 해결했어요^^
댓글 달기