抽象类和虚方法问题:不能将变量'list'声明为抽象类型'aStack <int>'aStack <int> list(5)

时间:2016-09-13 10:34:59

标签: c++ polymorphism

您好我正在尝试实现基于数组的堆栈(在c ++中),但我已经陷入其中一段时间​​了。每当我尝试在我的源文件中创建一个对象时,编译器就会生成错误&#34;不能将变量'list'声明为抽象类型'aStack'    aStack list(5);&#34;即使我的aStack类继承自ADT abs_stack。这是我的代码

match

1 个答案:

答案 0 :(得分:1)

错误意味着您的类aStack是一个抽象类,即至少有一个纯虚方法,因此无法实例化。这意味着由于签名不匹配,您的某些aStack方法无法参与虚拟覆盖。

请注意,cv-qualifiers和ref-qualifires会影响参数类型并更改签名:

void f(int x)
void f(const int& x)

被认为是不同的功能。成员函数cv-qualifiers也是如此,因此只有popinitialize_stack在代码中保留原始签名。