在尝试基于链表实现容器 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 &'
显然我把事情搞砸了,但我不确定代码的哪一部分实际上是问题所在。有关如何解决此问题的任何建议?任何有用的信息将不胜感激。
谢谢。:)