首先声明问题:模板类子类无法访问父类成员。在实现<<数据结构>>邓俊辉版第四章时,遇到如下代码时,怎样都无法编译通过。
#include"Vector.h"
template<typename T> class Stack:public Vector<T>
{
void push(T const& e) { insert(size(), e); }
T pop() { return remove(size() - 1); }
T& top() { return (*this)[size() - 1]; }
};
提示错误如下:
../include/Stack.h: In member function 'void Stack<T>::push(const T&)':
../include/Stack.h:4:41: error: there are no arguments to 'size' that depend on a template parameter, so a declaration of 'size' must be available [-fpermissive]
void push(T const& e) { insert(size(), e); }
^
../include/Stack.h:4:41: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)