J'utilise C# depuis un moment maintenant, et retourner en C++ est un casse-tête. J'essaie d'obtenir certaines de mes pratiques de C# avec moi en C++, mais je trouve une certaine résistance et je serais heureux d'accepter votre aide.Comment puis-je exposer les itérateurs sans exposer le conteneur utilisé?
Je voudrais exposer un itérateur pour une classe comme ceci:
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;
};
Suis-je essayer quelque chose qui est pas un problème? Dois-je juste typedef std :: vector < T> :: iterator? J'espère que le tout selon le iterator, pas le contenant ... la mise en œuvre
Voir aussi cette [question] (http://stackoverflow.com/questions/127009/returning-an-any-kind-of-input-iterator-instead-of-a-vectoriterator-or-a -listit) –