Jak mogę ujawnić iteratory bez narażania używanego pojemnika?

Używam C # już od jakiegoś czasu i powrót do C ++ jest bólem głowy. Próbuję pobrać niektóre z moich praktyk z C # ze mną do C ++, ale znajduję pewien opór i chętnie przyjmuję twoją pomoc.

Chciałbym udostępnić iterator dla klasy takiej jak ta:

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;
};

Czy próbuję czegoś, co nie jest problemem? Czy powinienem po prostu wpisać std :: vector <T> :: iterator? Mam nadzieję, że w zależności od iteratora, a nie kontenera implementującego ...

questionAnswers(4)

yourAnswerToTheQuestion