2012-11-05 19 views
6

Tôi đang viết một danh sách liên kết và tôi có một lớp Iterator trong lớp Danh sách của mình. Tôi muốn quá tải toán tử = nhưng tôi không biết cú pháp chính xác để bắt đầu nó.Làm thế nào để quá tải toán tử của một lớp lồng nhau?

Đây là những gì tôi có trong mã của tôi

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

tôi đang cố gắng này, nhưng tôi không chắc chắn liệu điều này là đúng hay không.

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

Có ai có thể làm rõ?

+0

Trông trừ OK kiểu trả về bị thiếu và thiếu độ phân giải trên kiểu tham số. – chris

Trả lời

8

Để làm rõ, suy nghĩ của bạn là chính xác, nhưng bạn quên để có một kiểu trả về trong khai báo hàm bạn:

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

cần phải được

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

Cảm ơn! Điều này thật đúng với gì mà tôi đã tìm kiếm. – Instinct

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

Có giá trị, nhưng kiểu tham số hàm đã nằm trong phạm vi của lớp 'List :: Iterator'. – aschepler

Các vấn đề liên quan