0

我有一个类(队列),它继承自一个名为 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”……为什么?

4

2 回答 2

5

因为lst是基类的成员,Stack<T>它是T. 在模板完全实例化之前,编译器无法检查依赖类型。您必须通过编写.让编译器知道它lst是此类基类的一部分Stack<T>::lst

正如评论中提到的那样,this->lst也是一个可行的解决方案。但是,人们可能会删除this不必要的。Stack<T>::lst以这种方式似乎更明确。

于 2011-10-26T20:26:19.520 回答
0

尝试this->lst代替lst.

于 2011-10-26T20:30:27.513 回答