1

私は持っていてQHash<QString, QHash<quint64, QElapsedTimer*> myNestedQHash;、試してみると

foreach (QHash<quint64, QElapsedTimer*>  stat, myNestedQHash.values(someStr))

私は得る

error: macro "Q_FOREACH" passed 3 arguments, but takes just 2

私がしたように、ネストされた QHash をループすることはできませんか?

4

3 に答える 3

3

なぜ使わない

for (QHash<QString, QHash<quint64, QElapsedTimer*>::iterator it = myNestedQHash.begin(); it != myNestedQHash.end(); ++it) 
{...}

代わりは?コピーを作成すると思うQ_FOREACHので、パフォーマンスも向上します...

/編集:

foreach は Q_FOREACH マクロの定義に過ぎないため、コンパイラはそれを認識し、2 つの値を受け入れます。追加のコンマがあるため、3 つの引数が表示されます。ここですべての情報を見つけることができます。

于 2013-07-08T16:19:40.530 に答える
0

次のように動作するはずです:

QHash<QString, int> myHash0;
myHash0["test0"]=0;
myHash0["test1"]=1;
QHash<QString, int> myHash1;
myHash1["test0"]=0;
myHash1["test1"]=1;

QHash<QString, QHash<QString, int> > myHashList;
myHashList["Hash0"] = myHash0;
myHashList["Hash1"] = myHash1;

QHash<QString, int> h;
foreach(h , myHashList)
{
    qDebug()<<h["test0"];
}
于 2013-07-08T10:50:15.110 に答える