2009-12-15 1 views
2

Lorsque je tente de compiler ce que je reçois cette erreur:Impossible de compiler std :: liste iterator avec le modèle

error: expected `;' before 'it' 

Pourquoi je ne peux pas déclarer iterator? Où est le problème?

#include <list> 

template <typename Z> 
class LBFuncBase: public LBBaseBlock<Z> 
{ 
    void Something() { 
     std::list<LBBaseBlock<Z>* >::iterator it; 
    } 
}; 
+3

Le point-virgule pour terminer la déclaration de classe? – pmr

Répondre

12

Essayez:

typename std::list<LBBaseBlock<Z>* >::iterator it; 

Edit:

Voir "Why do you sometimes need to write typename" pour une explication.

+0

Vous me battez de 7 secondes ... – Aaron

+0

Heureusement, je suis habituellement au moins 7 secondes en retard :). – Mic