1

独自のイテレータの実装と記述に慣れるために、プロジェクトとして単純な Set クラスに取り組んでいます。私は Set クラスを完全に肉付けしました。そして、Iterator を作成する良い方法は、内部クラスの Iterator を持つことであると言われました。それは私が行ったことです。

#include "homemadeSet.h"
Set::Set{
//etc
}

Set::Iterator::Iterator(){}

Set::Iterator Set::begin(){

    //return Iterator
}

これは私のコードの本当に切り捨てられた部分です。セットのパブリック メンバー関数 begin() が内部クラス Iterator を返すようにしようとしています。

編集:申し訳ありませんが、私の質問は、内部クラスを返すための構文は何ですか?

答えてくれてありがとう、時々最も簡単な解決策があなたを逃します^^

4

2 に答える 2

2

適切なコンストラクタを使用して型のオブジェクトを作成し、Set::Iteratorそれを返すだけです。たとえばIterator

public:
    Iterator();
    explicit Iterator(InternalStuff*);

あなたができる

Set::Iterator Set::begin() const {
    return Iterator(mFirstElement);
}
于 2013-03-05T03:22:44.323 に答える
1

内部クラスは、作成または返す方法においてトップレベルクラスと違いはありません。外部クラスの名前は内部クラスの完全修飾名の一部になるため、スコープ解決演算子を使用::して名前を作成する必要があります。

Set::Iterator Set::begin(){
    Set::Iterator res;
    // prepare the Iterator, for example
    // res.setPosition(0);
    return res;
}
于 2013-03-05T03:22:56.347 に答える