2012-11-05 20 views
6

Piszę połączoną listę i mam klasy Iterator w mojej klasie listy. Chcę przeciążać operatora =, ale nie znam poprawnej składni, aby go uruchomić.Jak przeładować operator zagnieżdżonej klasy?

To jest to, co mam w moim kodu

class List{ 
    //member stuff 
    class Iterator{ 
     private: Node* current; 
     public: Iterator& operator=(const Iterator& right); 
     } 
} 

Próbuję to, ale jestem pewien, czy to jest poprawne, czy nie.

List::Iterator::operator=(const Iterator& right){ 
//stuff 
} 

Czy ktoś może wyjaśnić?

+0

wygląda OK minus brakujący typ powrotu i brak rozdzielczości w parametrze. – chris

Odpowiedz

8

Aby wyjaśnić, twoje myśli są poprawne, ale zapomniałeś mieć typ zwracany w deklaracji funkcji:

List::Iterator::operator=(const Iterator& right){ 
//stuff 
} 

musi być

List::Iterator& List::Iterator::operator=(const Iterator& right){ 
//stuff 
} 
+0

Dzięki! Właśnie tego szukałem. – Instinct

0
List::Iterator& List::Iterator::operator=(const Iterator& right) {...} 
^^^^^^^^^^^^^^^ 
0
List::Iterator& List::Iterator::operator=(const List::Iterator& right) 
{ 
    //... 
} 
+0

Ważne, ale typ parametru funkcji znajduje się już w zakresie klasy "Lista :: Iterator". – aschepler

Powiązane problemy