Programación General > C/C++

 interfaz para std::map

(1/1)

diego.martinez:
buenas:

estamos haciendo una interfaz para poder cambiar en un proyecto entre std::map o std::vector.

Para ello estamos haciendo un objeto que contendra a uno de estos, y dispondrá de todos los metodos del mapa, para que, una vez implementado , podamos alterar solo el interfaz sin que el proyecto sea afectado.

Esto va bien:


--- Código: C++ ---  template <class Key, class T, class Compare = less<Key>, class Allocator = allocator<pair<const Key,T> > > class CMAP {public:  map<Key,T,Compare,Allocator > Internal;    unsigned int size() const  {    return Internal.size();  };    T& operator[](const Key& k)  {  return Internal[k];  }   void clear()  {  Internal.clear();  }    };   

Por ahora va bien, pero me esta dando un problema al intentar devolver un iterador.

--- Código: C++ ---   map<Key,T,Compare,Allocator >::iterator begin()  {     return Internal.begin();  }  
el compilador me devuelve:
Error[Pe757]: nontype "map<_Kty, _Ty, _Pr, _Alloc>::iterator [with _Kty=Key, _Ty=T, _Pr=Compare, _Alloc=Allocator]" is not a type name


como puedo hacer para devolver iteradores con los tipos correctos?


gracias!!!

diego.martinez:
parece que a la hora de pasar templates hay algun problema con como lo definí.

deberia haber hecho:

--- Código: C++ ---   typedef typename map<_Kty,_Ty>::iterator iterator;  
resuelto!

Navegación

[0] Índice de Mensajes

Ir a la versión completa