2012-11-05 18 views
6

私はリンクリストを作成しています。リストクラスにはIteratorクラスがあります。 =演算子をオーバーロードしたいが、それを開始する正しい構文がわからない。ネストされたクラスの演算子をオーバーロードする方法は?

これは私が私のコード

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

に持っているものですが、私はこれをしようとしていますが、私はこれが正しいかどうかわかりませんよ。

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

誰でも明示できますか?明確にするために

+0

すべきはOKマイナスに見えます戻り値の型が不足していて、パラメータ型の解決が不十分です。 – chris

答えて

8

、自分の考えが正しいですが、あなたはあなたの関数宣言で戻り値の型を持っているのを忘れて:

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

ニーズ

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

ありがとう!これはまさに私が探していたものです。 – Instinct

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

有効ですが、関数パラメータの型はすでにクラスList :: Iteratorのスコープ内にあります。 – aschepler

関連する問題