У меня есть устаревший код:
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;
};