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 ...