2013-06-11 4 views
2

Я хочу, чтобы создать список стеков в C++, но компилятор дает мне некоторые сообщения об ошибках:Использование списка объектов STL для создания стека

#include <list> 
    #include <stack> 

    class cName 
    { 
     [...] 
     list<stack> list_stack; 
     [...] 
    } 

Ошибки:

error C2143: syntax error : missing ';' before '<' 

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 

error C2238: unexpected token(s) preceding ';' 
+2

'stack' сам по себе шаблон. Вам нужно использовать его с аргументами шаблона. Вы также должны иметь 'std ::' перед именами типов, то есть 'std :: list' и' std :: stack'. – jogojapan

ответ

4

std::stack шаблон, вы должны использовать его с аргументами шаблона. Для образца:

class cName 
{ 
    typedef int ConcreteType; 
    std::list<stack<ConcreteType> > list_stack; 
        ^^^^ use it with real type 
}; 
1

также шаблонная стека, поэтому она должна быть

list<stack <...> > list_stack; 
1

Если вы хотите, чтобы ваш стек обрабатывать только один тип, например междунар, изменить stack в вашем коде int:

list<int> list_stack; 

В противном случае вы должны создать свой собственный тип шаблона вместо используя stack:

template <class T> 
class List 
{ 
    list<T> list_stack; 

    T top(); 
    void push(T v); 
};