リンクされたリストに基づいてコンテナー Set を実装しようとしているときに、少し問題が発生しました。ええ、セットの STL 実装があることは知っていますが、これは宿題です。:)
だから、これは私がこれまでに行ったことです:
私の Set.h ファイルは次のようになります。
template <class T>
class Set {
private:
typedef std::list<T> base_container;
base_container items;
public:
class myIterator {
public:
typename base_container::iterator base_iterator;
myIterator() { }
};
void addItem(const T item) {
items.push_back(item);
}
typedef typename Set<T>::myIterator setIterator;
setIterator begin() { return items.begin(); }
setIterator end() { return items.end(); }
Set<T>(void) { }
~Set<T>(void) { }
};
さて、main.cpp:
#include "Set.h"
int main(void) {
Set<int> mySet;
mySet.addItem(1);
mySet.addItem(2);
mySet.addItem(3);
mySet.addItem(4);
Set<int>::myIterator x;
x = mySet.begin(); // produces an error about non-convertible types.
return EXIT_SUCCESS;
}
エラーは次のとおりです。
error C2664: 'Set<T>::myIterator::myIterator(const Set<T>::myIterator &)' : cannot convert parameter 1 from 'std::_List_iterator<_Mylist>' to 'const Set<T>::myIterator &'
明らかに私は物事を台無しにしましたが、コードのどの部分が実際に問題なのかはわかりません。これを修正する方法について何か提案はありますか? 役立つ情報をいただければ幸いです。
ありがとう。:)