Necesito usar listas para mi programa y necesito decidir si uso std :: vector o std :: list. El problema con el vector es que no hay un método de eliminación y con la lista que no hay operador []. Así que decidí escribir mi propia clase extendiendo std :: list y sobrecargando el operador [].Extendiendo std :: list
Mi código es el siguiente:
#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;
}
puedo compilarlo pero me da un error de vinculador si trato de usarlo. ¿Algunas ideas?
Tienes 'operador T [] (int index);' y 'operador T [] (int & index);' pero puede desea usar 'T & operator [] (int index)' y 'const T & operator [] (int index) const' en su lugar. Además, dentro de esas funciones puede hacer 'while (index -)' en lugar de crear una nueva variable para realizar un seguimiento del recuento. – Dennis