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
Ir a la versión completa