5

qt foreach と複数のテンプレート パラメータを持つテンプレートで問題が発生しました。

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

次のエラーが表示されます。

error: use of undeclared identifier 'Q_FOREACH'

,Qtマクロは別のテンプレート宣言内でそれを検出しないため、テンプレート内のが原因であると思います。通常の for ループや C++11 を使用せずに修正するにはどうすればよいですか?

4

1 に答える 1

10

コンパイラが C++11 をサポートしている場合は、次を使用できます。

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) { ... }
于 2013-01-08T14:06:18.740 に答える