Итак, я пытаюсь создать класс стека, который наследует функции-члены от класса связанного списка.Класс связанного списка не имеет собственной фактической реализации;это по сути абстрактный виртуальный класс.Оба являются шаблонными классами.Когда я пытаюсь получить доступ к функции-члену, используя мой производный класс стека, я получаю сообщение об ошибке «функция-член не объявлена в классе« стек »».Ниже мой код.Я не уверен, в чем проблема.Я включил имена файлов .h, а также последовательность: public List в объявление класса стека.Пожалуйста помоги!Если для ответа на этот вопрос вам понадобится больше кода, пожалуйста, дайте мне знать !!Спасибо!
Код для объявления родительского класса List
#ifndef LIST221_H
#define LIST221_H
#include "Node221.h"
template <typename T>
class List221 {
public:
List221();
~List221();
virtual int size() const;
virtual bool empty() const;
virtual bool push(T obj); //will push in a new node
virtual bool pop(); //will pop off the top node
virtual bool clear();
protected:
private:
Node<T>* front;
Node<T>* rear;
};
#endif
Код для объявления класса Stack. Включает файл List.h
#include "List221.h"
#include "Node221.h"
template <typename T>
class Stack221 : public List221 <T> {
public:
Stack221();
~Stack221();
T top();
private:
Node<T>* topnode;
};
Пример функции-члена из класса List, к которому я пытаюсь получить доступ.Также включает List.h вверху страницы
template <typename T>
bool Stack221<T>::push(T obj) {
Node<T>* o = new Node(obj);
if (topnode == nullptr) {
topnode = o;
}
else {
o->next = topnode;
topnode = o;
}
return true;
}
Отображается ошибка
error: no ‘bool Stack221<T>::push(T)’ member function declared
in class ‘Stack221<T>’
bool Stack221<T>::push(T obj) {
^