Acces à une meth avec un it d'un conteneur de ptr sur objet
Bonjour la comunauté,
DSL pour le style télégraphique du titre, je n'ai pas trouvé plus explicite...
J'ai un vector qui contient des pointeurs std::unique_ptr pointant sur des objets de la classe Fenetre :
Code:
std::vector <std::unique_ptr<Fenetre> > vPfenetre
Je voudrais accéder à la methode getType() de la classe Fenetre qui me renvoie un typeFenetre (enum class Public déclaré dans la classe Fenetre)
Si je code comme suit :
Code:
1 2 3 4 5 6 7 8
| for(unsigned int i(0); i < m_vPfenetre.size(); ++i)
{
if(vPfenetre[i] -> getType() == Fenetre::typeFenetre::fCarte)
{
// fait des trucs
i = vPfenetre.size();
}
} |
ça compile et fonctionne comme espéré. 8-)
mais si je code avec un itérator comme suit :
Code:
1 2 3 4 5 6 7 8
| for(auto it = vPfenetre.begin(); it != vPfenetre.end(); ++it)
{
if (*it -> getType() == Fenetre::typeFenetre::fCarte) // it ou *it renvoie le même message d'erreur
{
// fait des trucs
it = vPfenetre.end();
}
} |
Le compilateur me dit :
error: 'class std::unique_ptr<Fenetre>' has no member named 'getType'
Je ne comprends pas : *it ne déréférence t-il pas le pointeur itéré de vPfenetre qui accéde à la méthode getType() de la classe Fenetre via l'opérateur -> comme vPfenetre[i] dans le premier cas ? :weird:
J'ai potentiellement quelques cas similaires et j'aimerais bien comprendre l'utilisation des itérators avant de travailler ces autres cas. ;)
Rick.