在下面的代码中,我无法弄清楚为什么对“应用”的调用被报告为模棱两可。提供的参数 ( A_applicator::apply
) 只有一个可接受的匹配项。请注意,我非常感谢对标准的参考,这将帮助我确定导致这种歧义的解决流程。
struct A { };
struct B { };
struct A_D : public A { };
struct A_applicator {
virtual void apply( A ) { }
};
struct B_applicator {
virtual void apply( B ) { }
};
struct dual_applicator : public B_applicator, public A_applicator {
};
int main() {
dual_applicator app;
A_D d;
app.apply(d);
}
(在线演示)