我有一个具有以下继承结构的程序
List
/ \
DoublyLinkedList CircularlyLinkedList
\ /
CircularlyDoublyLinkedList
在List
类(完全抽象)中,我有一个纯虚函数
int virtual insert(List **head, int position) = 0;
我已经在DoublyLinkedList
andCircularlyLinkedList
类中覆盖了它。
为了解决类中的歧义,我使用范围解析运算符明确指定要继承CircularlyDoublyLinkedList
哪个版本的函数,例如:
我的问题是这个语句insert()
::
DoublyLinkedList::insert(..)
List *cdll_head = new CircularlyDoublyLinkedList();
抛出错误
"cannot convert CircularlyDoublyLinkedList* to List*"
当我将声明更改为
CircularlyDoublyLinkedList *cdll_head = new CircularlyDoublyLinkedList();
我收到另一个错误,因为insert(...)
接受类型为参数的参数List**
如何在没有强制转换的情况下解决此问题?