2010-04-24 17 views
6

Korzystanie poniższy kod:"Błąd: oczekiwano typu, got 'classname'" w 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 

Dostaję:

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 

Na wskazanej linii. Węzeł jest wyraźnie zdefiniowany przed b_graph, który go używa - co ja tu zrobiłem?

Odpowiedz

24

node nie jest klasą, to szablon klasy. Musisz instancję go używać go jako typ elementu z vector, np

vector<node<int> > vertices; 

(int służy jako przykład, należy użyć typu rzeczywiście potrzebujesz)

+0

oh! w porządku. Dzięki, to zadziałało. – Bay

+2

Dzięki - znalazłem twoją odpowiedź podczas wyszukiwania i zaoszczędziłem mi trochę czasu. –

Powiązane problemy