6

QList の動作の一部を理解するのに問題があります。

#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;
}

マークされた行での代入でコンパイルエラーが 'QList' を 'double' に変換できないというエラーが表示されます。を使用すると動作しますABC = myList.at(i)が、QTリファレンスはそれを言っているようでat()[] operator同じことです。何が違いを生むのか誰か知っていますか?

ありがとう

4

3 に答える 3

9

これは、オブジェクトoperator[]適用する必要があるためですが、へのポインタです。QList myListQList

試す

ABC = (*myList)[i];

代わりは。(また、正しい構文はmyList->at(i)の代わりになりmyList.at(i)ます。)

于 2010-02-09T15:53:13.847 に答える
3

あなたはおそらく意味しました

ABC = (*myList)[i];
于 2010-02-09T15:52:57.063 に答える
3

myList は QList へのポインターであるため(*myList)[i]、感嘆符でマークされた行のように使用する必要があります。また、使用できませんABC = myList.at(i)。ABC = を使用する必要があります。myList->at(i)

于 2010-02-09T15:54:16.217 に答える