[완료][C++] 왜 연산자를 호출하지 못할까요?

khnet의 이미지

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++입니다.

고수님들 부디 도움 부탁드려요 ㅜㅜ

klara의 이미지

khnet의 이미지

감사합니다! 덕분에 해결했어요^^