2013-01-08 24 views
5

私はqt foreachの問題と、複数のテンプレートパラメータを持つテンプレートを見つけました。私はQtのマクロは、別のテンプレート宣言内でそのことを検出しなかったので、それがテンプレートに,によるものであることを推測Qt foreach with複数のパラメータを持つテンプレート

error: use of undeclared identifier 'Q_FOREACH' 

QVector<Node<T, U> > nodes; 
... 
[append some data] 
... 
foreach(const Node<T, U>& node, nodes) { 
    ... 
} 

私はこのエラーを取得しています。通常のforループやC++ 11を使用せずにどのように修正できますか?あなたのコンパイラがC++ 11をサポートしている場合

+0

は 'Node ' qtコンテナクラスですか? – Zaiborg

+0

@Zaiborgはい、そうです。私はその質問を編集した。 – dominik

+0

typedefを試してみましたか? – Ashot

答えて

10

、あなたは

foreach(auto node, nodes) { ... } 

またはそれ以外の場合でも

for(auto node: nodes) { ... } 

は、あなたがこのようなテンプレートにカンマを無視するプリプロセッサを強制することができます使用することができます

#define COMMA , 
foreach(const Node<T COMMA U>& node, nodes) { ... } 

また、typedefを使用することもできます。

typedef Node<T, U> NodeTU; 
foreach(const NodeTU& node, nodes) { ... } 
関連する問題