我有以下代码:
struct A{ f()=0; };
struct Aa : A{ f(){} };
struct B{
void foo(A&)=0;
};
struct Bb : B{
void foo(Aa&);
};
现在我无法创建Bb
类实例,因为我没有覆盖foo
从课堂上B
与所需的参数。我怎样才能让它发挥作用?
让我们假设这是可能的/编译并添加额外的类:
struct A{ void f()=0; };
struct Aa : A{ int x; void f(){} };
struct Ab : A{ double x; void f(){} };
struct B{
void foo(A&)=0;
};
struct Bb : B{
void foo(Aa&);
};
现在这应该如何运作?
std::unique_ptr<B> p = std::make_unique<Bb>;
Ab a;
p->foo(a); // ???
如何重写函数Bb::foo
应该处理这种情况吗?它期待某种类型的东西Aa
,但是得到了Ab
哪个不是Aa
. From B::foo
从这个角度看,这个电话完全没问题,因为Ab
是的孩子A
.
这应该会提示您为什么编译器没有执行您所期望的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)