template<typename T>
class Vector
{
public:
Rank size()const { return _size; }//向量的规模
//可写访问接口
int remove(Rank lo, Rank hi);//删除区间[lo,hi)的元素
Rank insert(Rank r, T const& e);//在值为r处插入元素e
Rank insert(const T& e) { return insert(_size, e); }//重载形式,作为末元素插入
};
template<typename T>
class Stack :public Vector<T>
{
public:
//接口
void push(T const& e) { insert(size(), e);}//栈顶入栈-向量末元素处插入
T pop() { return remove(Vector<T>::size() - 1); }//栈顶元素出栈-删除向量的末元素
T& top() { return(*this)[size() - 1]; }//取栈顶元素,返回引用使得返回值可作为左值被修改,*取指针指向的地址存放的数据,&取变量的地址
};
感觉是派生类调用不了基类成员,但找不到原因
求解答
你自己写了一个类,里面的size
编译时被std::size
给覆盖了,需要指定为Vector<T>::size()
我在VS2010上编译了一下,没毛病啊