鉴于一些基本接口A,B,C ....Ñ如何实现多个接口的多态参数?
并实现一组其中的一些假设的类:
class MyClass1: public A, public B, public N;
class MyClass2: public A, public B, public D;
我想创建功能,其接受作为参数的对象(或指针为对象)的一类,其中包括,让说A和B.
void myFunc(A&B obj);
从一个C++程序员的角度来看,这似乎荒谬的。从软件架构师的角度来看,这似乎是所有语言都应该具备的基本集团。
是否有任何技巧(模板除外)或解决方案?
注意:大多数接口不是来自我的,所以原则上不可能对接口进行更改。
编辑: 这里是一些例子:
class A{
public:
virtual void draw()=0;
};
class B{
public:
virtual void edit()=0;
};
class AandB: public A, public B
{
virtual void draw()override{};
virtual void edit()override{};
};
//This function know about A, B, but not AandB
void some_function((A+B)& a_and_b) { // That do not work
a_and_b.draw();
a_and_b.edit();
}
int main()
{
AandB c;
some_function(c); // that is not so easy
}
在我看来,'MyClass'继承'A'和'B'这个事实与这个问题无关。 'A'和'B'是不相关的类型,所以真正的问题是如何编写一个可以接受两种不相关类型之一的函数。 – Galik
@Galik:这是一个界面的要点:定义一些行为。 A是一种行为(可绘制?),B是另一种行为(可编辑?)。所以这个函数接受任何可编辑和可绘制的类。所以你的问题的答案是:不是A或B,而是A和B. –
啊好的。所以你想接受任何实现'A'和'B'的类。模板实际上是解决这个问题的方法,您为什么不想要模板解决方案? – Galik