написание универсального стекового класса на c ++

0

Привет, я не уверен, что мой код неверен. Я искал что-нибудь.

вот вопрос:

Напишите общий класс с именем Stack в Java или C++ для типа стека, который использует связанный список для хранения элементов. Класс Stack имеет переменную-член, названную head, которая ссылается на первый узел списка, и переменную-член с именем size, которая хранит количество элементов в стеке. Класс Stack предоставляет все методы класса стека STL, включая push, pop, top и empty.

они дают класс узлов

template <typename T>
class Node {
public:
T nodeValue;
Node<T> *next;
Node (const T& item, Node<T> *ptr = NULL):
nodeValue(item), next(ptr)
{}
};

Теперь это класс Stack, который я написал:

template <typename T>
class Stack:public std::stack<Node>
{
public:
    Node<T> *head;
    T size;
    Stack(const T& capacity, Node<T> *ptr):size(capacity),head(ptr){};
};

когда я запускаю его, я получаю следующее:

error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Sequence> class std::stack   
  • 1
    Вы не сказали нам, что не так. У вас есть сообщение об ошибке? Также стоит отметить, что если это домашнее задание, они почти наверняка не захотят, чтобы вы использовали std::stack .
  • 0
    Какова цель написания вашего собственного стекового класса вместо использования реализации STL? В чем ваша ошибка в деталях? Непонятно, что вы просите!
Показать ещё 3 комментария
Теги:
class
generics
templates
inheritance

1 ответ

1
Лучший ответ

По крайней мере, вы должны создать экземпляр Node, когда вы используете его с std::stack:

template <typename T>
class Stack : public std::stack<Node<T> >
                                 // ^^^
{
];
  • 0
    благодарю вас!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню