C ++ Производный класс - PullRequest
       43

C ++ Производный класс

0 голосов
/ 27 октября 2011

У меня есть класс (очередь), который наследуется от класса с именем Stack.это выглядит так:

template <class T> class Stack
{
         public:
                virtual const T pop();
                 LinkedList<T> lst;
};

template <class T> class Queue : public Stack<T>
{
         public:
                virtual const T pop();
};

template <class T> const T Queue<T>::pop()
{
                             const T val = lst[0];
                             return val;
}

Компилятор говорит "lst undecleared" ... почему?

Ответы [ 2 ]

5 голосов
/ 27 октября 2011

Поскольку lst является членом базового класса Stack<T>, который является зависимым типом для T.Компилятор не может проверять зависимые типы, пока шаблон не будет полностью создан.Вы должны сообщить компилятору, что lst является частью такого базового класса, написав Stack<T>::lst.

Как упомянуто в комментариях, this->lst также является приемлемым решением.Тем не менее, люди, скорее всего, удалят this, поскольку считают ненужным.Stack<T>::lst кажется более явным в этом смысле.

0 голосов
/ 27 октября 2011

Попробуйте this->lst вместо lst.

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