我有一个遗留代码:方法超载而继承在C++
struct Iface1
{
virtual ~Iface1() {}
virtual void foo(const int arg1) const = 0;
};
struct Iface2
{
virtual ~Iface2() {}
virtual void foo(const int arg1, const int arg2) const = 0;
};
/// Composite interface
struct Iface12 : Iface1, Iface2
{
};
我需要建立复合接口,一个装饰。下面的代码甚至没有被编译,因为它对于G ++和MSVC推断调用哪种类型的foo()是“模糊的”。任何人都可以请我指出如何让代码在编译和工作? (不幸的是我没有时间重构)。
我甚至不明白为什么编译器无法推断出要调用哪个函数,因为所有函数签名都是显式的。谢谢。
struct IfaceDecorator : Iface12
{
IfaceDecorator(Iface12& iface) : impl(iface) {}
virtual void foo(const int arg1) const
{
impl.foo(arg1);
}
virtual void foo(const int arg1, const int arg2) const
{
impl.foo(arg1, arg2);
}
private:
Iface12& impl;
};
你应该发布你正在得到的确切的错误。 – 2011-05-29 09:10:54