Вопрос наследования? - PullRequest
0 голосов
/ 09 февраля 2019

Итак, я пытаюсь создать класс стека, который наследует функции-члены от класса связанного списка.Класс связанного списка не имеет собственной фактической реализации;это по сути абстрактный виртуальный класс.Оба являются шаблонными классами.Когда я пытаюсь получить доступ к функции-члену, используя мой производный класс стека, я получаю сообщение об ошибке «функция-член не объявлена ​​в классе« стек »».Ниже мой код.Я не уверен, в чем проблема.Я включил имена файлов .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) {
                         ^

1 Ответ

0 голосов
/ 09 февраля 2019

Кажется, что вы предоставили реализацию Stack221<T>::push, но вы не объявили этот метод в объявлении класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...