2010-02-09 14 views
6

Tengo problemas para comprender algo del comportamiento de QList.Puntero a QList - en() frente a [] operador

#include <QList> 
#include <iostream> 
using namespace std; 

int main() 
{ 
    QList<double> *myList; 

    myList = new QList<double>; 
    double myNumber; 
    double ABC; 

    for (int i=0; i<1000000; i++) 
    { 
     myNumber = i; 
     myList->append(myNumber); 
     ABC = myList[i]; //<----------!!!!!!!!!!!!!!!!!!! 
     cout << ABC << endl; 
    } 

    cout << "Done!" << endl; 
    return 0; 
} 

me sale error de compilación no se puede convertir ‘QList’ a ‘doble’ en la asignación de en la línea marcada. Funciona cuando uso ABC = myList.at(i), pero la referencia de QT parece decir que at() y [] operator es lo mismo. ¿Alguien sabe qué hace la diferencia?

Gracias

Respuesta

9

Eso es porque operator[] se debe aplicar a un objeto QList, pero myList es un puntero a QList.

Trate

ABC = (*myList)[i]; 

lugar. (Además, la sintaxis correcta debería ser myList->at(i) en lugar de myList.at(i).)

+0

sí Quise decir myList-> en (i) - error en la pregunta, gracias por la ayuda. – Moomin

3

Usted probablemente significaba

ABC = (*myList)[i]; 
3

miLista es un puntero a QList por lo tanto, se debe utilizar como (*myList)[i] en la línea marcada con signos de admiración. Además, no puede usar ABC = myList.at(i), tiene que usar ABC = myList->at(i)

Cuestiones relacionadas