您好我正在尝试实现基于数组的堆栈(在c ++中),但我已经陷入其中一段时间了。每当我尝试在我的源文件中创建一个对象时,编译器就会生成错误"不能将变量'list'声明为抽象类型'aStack' aStack list(5);"即使我的aStack类继承自ADT abs_stack。这是我的代码
match
答案 0 :(得分:1)
错误意味着您的类aStack是一个抽象类,即至少有一个纯虚方法,因此无法实例化。这意味着由于签名不匹配,您的某些aStack方法无法参与虚拟覆盖。
请注意,cv-qualifiers和ref-qualifires会影响参数类型并更改签名:
void f(int x)
void f(const int& x)
被认为是不同的功能。成员函数cv-qualifiers也是如此,因此只有pop
和initialize_stack
在代码中保留原始签名。