C++ 模板类子类无法访问父类成员

首先声明问题:模板类子类无法访问父类成员。在实现<<数据结构>>邓俊辉版第四章时,遇到如下代码时,怎样都无法编译通过。

#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)

从提示错误中,可以发现Stack类无法访问Vector类的size()。该如何解决这个问题呢?

方法一:添加this->

#include"Vector.h"
template<typename T> class Stack:public Vector<T>
{
    void push(T const& e) { this->insert(this->size(), e); } 
    T pop() { return this->remove(this->size() - 1); } 
    T& top() { return (*this)[this->size() - 1]; } 
};

方法二:添加父类名称Vector<T>::(偷懒ing...

void push(T const& e) { Vector<T>::insert(Vector<T>::size(), e); }

具体参考了下面几篇博客和讨论:

经验分享 程序员 微信小程序 职场和发展