【发布时间】:2013-01-19 14:10:54
【问题描述】:
我在尝试基于链表实现容器 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 &'
显然我把事情搞砸了,但我不确定代码的哪一部分实际上是问题所在。 有关如何解决此问题的任何建议?任何有用的信息将不胜感激。
谢谢。 :)
【问题讨论】:
-
查看错误信息会有所帮助
-
哦,是的,当然,抱歉:错误 C2664: 'Set
::myIterator::myIterator(const Set ::myIterator &)' : cannot convert parameter 1 from ' std::_List_iterator<_mylist>' 到 'const Set ::myIterator &'
标签: c++ templates stl iterator