Tar*_*aru 0 c++ inheritance class derived
我有一个类(Queue),它继承自一个名为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;
}
Run Code Online (Sandbox Code Playgroud)
编译器说"lst undecleared"......为什么?
因为lst是基类的成员,Stack<T>它是依赖类型T.在模板完全实例化之前,编译器无法检查依赖类型.你必须lst通过编写让编译器知道这是基类的一部分Stack<T>::lst.
正如在评论中提到的那样,this->lst也是一个可行的解决方案.但是,人们很可能会删除那些this不必要的东西.Stack<T>::lst以这种方式似乎更明确.
| 归档时间: |
|
| 查看次数: |
700 次 |
| 最近记录: |