我需要为我的程序使用列表,并且需要决定是使用 std::vector 还是 std::list。vector 的问题是没有 remove 方法,而 list 的问题是没有运算符 []。所以我决定编写自己的类来扩展 std::list 并重载 [] 运算符。
我的代码如下所示:
#include <list>
template <class T >
class myList : public std::list<T>
{
public:
T operator[](int index);
T operator[](int & index);
myList(void);
~myList(void);
};
#include "myList.h"
template<class T>
myList<T>::myList(void): std::list<T>() {}
template<class T>
myList<T>::~myList(void)
{
std::list<T>::~list();
}
template<class T>
T myList<T>::operator[](int index) {
int count = 0;
std::list<T>::iterator itr = this->begin();
while(count != index)itr++;
return *itr;
}
template<class T>
T myList<T>::operator[](int & index) {
int count = 0;
std::list<T>::iterator itr = this->begin();
while(count != index)itr++;
return *itr;
}
我可以编译它,但如果我尝试使用它,我会收到链接器错误。有任何想法吗?