¿Cómo puedo exponer los iteradores sin exponer el contenedor utilizado?
He estado usando C # por un tiempo y volver a C ++ es un dolor de cabeza. Estoy tratando de llevar algunas de mis prácticas de C # conmigo a C ++, pero estoy encontrando algo de resistencia y estaré encantado de aceptar su ayuda.
Me gustaría exponer un iterador para una clase como esta:
template <class T>
class MyContainer
{
public:
// Here is the problem:
// typedef for MyIterator without exposing std::vector publicly?
MyIterator Begin() { return mHiddenContainerImpl.begin(); }
MyIterator End() { return mHiddenContainerImpl.end(); }
private:
std::vector<T> mHiddenContainerImpl;
};
¿Estoy tratando de algo que no es un problema? ¿Debo escribir typedef std :: vector <T> :: iterator? Espero depender solo del iterador, no del contenedor de implementación ...