使用STL堆栈作为C++类的成员

kel*_*yne 0 c++ stack stl class

我正在开发一个需要列表(单独)堆栈的项目.我创建了一个名为"stacklist"的类,就是堆栈列表.我希望类有一个指向列表头部的堆栈指针.但是,每当我尝试构建类时,我都会收到错误.

#ifndef STACKLIST_H
#define STACKLIST_H

#include <stack>

//source: Data Structures Using C++: Linked List Implementation Part II (List Class)
//url: http://www.youtube.com/watch?feature=endscreen&NR=1&v=7vZo17iv1zQ
class stacklist
{
    public:
        stacklist();
        void addToHead(const int&);
        void printList();
        void insert(const int&);

    private:
        stack<int>* head; //THIS IS WHERE I AM HAVING THE PROBLEM
        int size;

};



#endif // STACKLIST_H
Run Code Online (Sandbox Code Playgroud)

错误消息是"error:expected';' 在'<'标记之前

任何可以提供的见解都将受到高度赞赏.

jua*_*nza 6

标准库stack位于std命名空间中,因此您需要适当地限定名称:

std::stack<int>* head;
Run Code Online (Sandbox Code Playgroud)

你应该考虑使用一个std::list<std::stack<int>>而不是你的班级.


Ker*_* SB 5

模板的正确名称是std::stack.

如果你想要的只是一个堆栈列表,你总是可以使用std::list<std::stack<int>>(或者std::forward_list如果你只需要向前遍历).但即使你追求自己的设计,也没有理由不能让堆栈成为直接的类成员.