我是C++的新手.你能不能帮助我摆脱错误:
错误C2259:'MinHeap':无法实例化抽象类
IntelliSense:返回类型与重写虚函数函数的返回类型"const int&"不相同或协变
template <class T> class DataStructure {
public:
virtual ~DataStructure () {}
virtual bool IsEmpty () const = 0;
virtual void Push(const T&) = 0;
virtual const T& Top() const = 0;
virtual void Pop () = 0;
};
class MinHeap : public DataStructure<int>
{
private:
std::vector<int> A;
public:
bool IsEmpty() const
{
..
}
int Top() const
{
..
}
void Push(int item)
{
...
}
void Pop()
{
..
}
};
Run Code Online (Sandbox Code Playgroud)
问题在于const T& Top()与int Top().后者与前者不同,因此不是覆盖.相反,它隐藏了基类功能.您需要返回与基类版本完全相同的内容:const int& Top() const.BTW
存在同样的问题Push().