テンプレート リンク リストを C++ で実装しようとしていますが、これには Iterator と ConstIterator があると想定されています (リストを変更することはできません)。そして、呼び出されたメソッドがリスト オブジェクトに一致するイテレータを返す必要があります。たとえば、begin() が const リストで呼び出された場合、ConstIterator が返され、非 const リストでは Iterator が返されます。
どうすればいいですか?
ありがとう。
テンプレート リンク リストを C++ で実装しようとしていますが、これには Iterator と ConstIterator があると想定されています (リストを変更することはできません)。そして、呼び出されたメソッドがリスト オブジェクトに一致するイテレータを返す必要があります。たとえば、begin() が const リストで呼び出された場合、ConstIterator が返され、非 const リストでは Iterator が返されます。
どうすればいいですか?
ありがとう。
このような:
ConstIterator begin() const;
Iterator begin(); // ^^^^^
また、追加したいかもしれませんcbegin
:
ConstIterator cbegin() const;
関数をオーバーロードするだけです:
Iterator getIterator();
ConstIterator getIterator() const;
これは、単純な C++ のオーバーロードで実現できます。すなわち:
ConstIterator GetList(const List* x) const { ... }
Iterator GetList(List* x) { ... }