2013-01-08 33 views
5

Mi sono imbattuto in un problema con un foreach qt e un modello con più parametri del modello.Qt foreach con modelli con più parametri

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

sto ottenendo questo errore:

error: use of undeclared identifier 'Q_FOREACH' 

Credo che sia dovuto al , nel modello perché la macro Qt non rileva che dentro un'altra dichiarazione modello. Come posso aggiustarlo senza usare normali cicli for o C++ 11?

+0

è 'Nodo ' una classe contenitore qt? – Zaiborg

+0

@Zaiborg Sì, lo è. Ho modificato la domanda. – dominik

+0

hai provato typedef? – Ashot

risposta

10

Se il compilatore supporta C++ 11, è possibile utilizzare

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

o anche

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

In caso contrario, è possibile forzare il preprocessore di ignorare la virgola nel modello come questo:

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

Oppure è possibile utilizzare un typedef

typedef Node<T, U> NodeTU; 
foreach(const NodeTU& node, nodes) { ... }