[완료][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
참고하세요.
감사합니다!
감사합니다! 덕분에 해결했어요^^
댓글 달기