2015-12-01 1 views
0

j'ai une structure de données qui ressemble à ceci:accès Cant méthodes de QVector complexes

QVector<QHash<QPair<int, int>, QVector<double> > > * wow = new QVector< QHash<QPair<int, int>, QVector<double> > >(4); 

Quand j'écris wow->at(0).keys(); cela fonctionne très bien, mais quand j'écris wow[0].keys(); je reçois une erreur disant ce qui suit:

'class QVector, QVector>>' n'a aucun membre nommé 'keys' wow [0] .keys(); ^

je vais devoir utiliser des méthodes qui nécessitent non seulement l'accès en lecture seule et je ne comprends pas pourquoi ce happens.Can vous s'il vous plaît aidez-moi et comment dois-je accéder à lire les méthodes du Qhashe à ne pas une seule façon?

Répondre

1

Lorsque vous écrivez wow[0].keys(), avec wow étant un pointeur, il retourne le premier objet pointé, comme un tableau. Il se transforme fondamentalement en un déréférencement du pointeur, comme ceci: wow->keys(). Étant donné qu'un QVector n'a pas une méthode keys, la compilation échoue. Si vous souhaitez obtenir l'élément 0 à partir de votre vecteur, utilisez plutôt wow->at(0).keys() ou (*wow)[0].keys(). Premier déréférencement, puis utilisez l'opérateur d'indice.

+0

Je comprends maintenant. Merci beaucoup! – pr0r1der