2010-04-24 5 views
6

En utilisant le code suivant:"Erreur: un type Expected, obtenu 'classname'" en C++

template <typename T> 
class node { 
    [. . .] 
}; 
class b_graph { 
friend istream& operator>> (istream& in, b_graph& ingraph); 
friend ostream& operator<< (ostream& out, b_graph& outgraph); 

public: 

    [...] 
private: 
    vector<node> vertices; //This line 

Je reçois:

error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’ 
error: expected a type, got 'node' 
error: template argument 2 is invalid 

Sur la ligne indiquée. Le noeud est clairement défini avant que b_graph ne l'utilise - qu'ai-je fait ici?

Répondre

24

node n'est pas une classe, c'est un modèle de classe. Vous devez instancier pour l'utiliser comme le type d'élément de vector, par exemple,

vector<node<int> > vertices; 

(int est utilisé comme un exemple, vous devez utiliser le type que vous avez réellement besoin)

+0

oh! d'accord. Merci, ça a marché. – Bay

+2

Merci - J'ai trouvé votre réponse tout en cherchant et cela m'a fait gagner du temps. –

Questions connexes