我有一个带有虚函数class A
的抽象void fnc(XX*)
在它的子类(class B
)中我想收紧函数参数类型(我希望这是正确的单词),因此fnc只接受YY*
,它是{{1的子类}}
它不起作用,因为我收到了这个错误:
XX
代码:
invalid new-expression of abstract class type 'C'
because the following virtual functions are pure within 'C':
virtual void A::fnc(XX*)
答案 0 :(得分:2)
你不能。 C ++中不支持共变函数参数类型。
它一般也不受支持,因为它很容易违反Liskov替代原则。
但是,无论你的代码中发生了什么,都是你重载了这个功能。您添加了另一个需要重写的纯虚函数。原始版本仍未实现,您的编译器会抱怨它。