继承多个接口时出现问题

By | 03月19日
Advertisement

最近遇到一个问题,特向高手请教。
有两个接口,InterfaceA和InterfaceB,这两个接口都有同一个接口方法。程序如下:
class InterfaceA{
public:
virtual void func()=0;
};

class InterfaceB{
public:
virtual void func()=0;
}
现在,我的类需要实现同时实现这两个接口。
class myClass:public InterfaceA,public InterfaceB
{
public:
//现在如何分别实现这两个接口呢?
};

InterfaceA和InterfacB都是有第三方提供,我没办法更改。
请高手们赐教!

回复于:2008-02-29 13:03:28

做一个夹层,这种方法是可移植性最好的。

C/C++ code

class IA:public InterfaceA
{
public:
void func(){}
};
class IB:public InterfaceB
{
public:
void func(){}
};
class myClass:public IA , public IB
{
};


回复于:2008-02-29 13:04:05

C/C++ code

class InterfaceA
{
public:
virtual void func()=0;
};

class InterfaceB
{
public:
virtual void func()=0;
};

class MyClass : public InterfaceA, public InterfaceB
{
public:
virtual void InterfaceA::func()
{
printf("A");
}

virtual void InterfaceB::func()
{
printf("B");
}
};

int main(int argc, _TCHAR* argv[])
{
MyClass* p = new MyClass();
((InterfaceB*)p)->func();
return 0;
}


Similar Posts:

  • 当类继承多个接口具有相同的方法,怎么做?(界面明确的执行行动)

    于<接口的显式实现与隐式实现>中讲到了接口的显式实现.那有什么作用呢?我们来看一段代码. class Program { static void Main(string[] args) { SimpleOutput s = new SimpleOutput(); IOutput io = s; ILog il = s; s.output(); io.output(); il.output(); Console.ReadLine(); } } interface IOutput { void o

  • ATL多继承情况下接口的取得

    多继承情况下接口的取得. 1. 多Dispatch接口 class ATL_NO_VTABLE CUse : public CComObjectRootEx <CComSingleThreadModel> , public CComCoClass <CUse, &CLSID_Parser> , public IDispatchImpl <IUse1, &IID_IParser, &LIBID_netfeesrvLib, /*wMajor =*/ 1,

  • Thread类继承和Runnable接口实现的区别

    创建线程的第一种方式:继承Thread类. 步骤: 1,定义类继承Thread. 2,复写Thread类中的run方法. 目的:将自定义代码存储在run方法.让线程运行.//run();仅仅是对象调用方法.而线程创建了,并没有运行. 3,调用线程的start方法, 该方法两个作用:启动线程,调用run方法. Demo d = new Demo();//创建好一个线程. //d.start();//开启线程并执行该线程的run方法. d.run();//仅仅是对象调用方法.而线程创建了,并没有运行

  • (转)通过多重继承实现多接口时,解决名字冲突的一种设计模式(forwarding shim)

    通过多重继承实现多接口时,解决名字冲突的一种设计模式 例:ICar接口有一个GetMaxSpeed方法.IBoot也有GetMaxSpeed方法,而且他们具有同样的原型,这意味着在使用多重继承时,类的实现这只能编写一个GetMaxSpeed方法,然后编译器和连接器将会初始化ICar和IBoat的vtbl,使他们的GetMaxSpeed表项都指向这个实现. 这种行为对于大多数的实现来说是非常合理的,但是如果对象需要根据被请求的接口类型的不同,而返回不同的最大速度,该怎么办? 一种常用的技术:建立一

  • 如何在调用SAP接口时返回中文信息

    公司的SAP项目告一段落了,但用户指出SAP接口返回的错误信息是英文的,看不懂呀. 听顾问说SAP是支持中文信息的,但是需要在调用接口时传递一个额外的header,叫"sap-language:zh". 遍地google,终于让我寻着了解决的办法.原来是如此的简单,但往往复杂的问题都有一个简单的处理办法. $wsdl = "http://xxxx"; $options = array( 'login' => 'TEST', 'password' => '

  • 说说我做PC键盘接口时的一点遭遇

    喂马 劈柴 做一个幸福的人 2005年11月 日 一 二 三 四 五 六 30 31 1 2 3 4 5 6 7 8 9 10 12 13 15 16 17 19 20 21 22 24 25 26 27 28 29 1 2 3 4 5 6 7 8 9 10 公告 ◇ 欢迎来到这里的每一位朋友. ◇ 无需注册即可评论或留言. ◇ 文章无"转载(ZT)"字样均为原创. ◇ "随笔分类"中包含我的所有随笔 留言簿(13) 随笔分类 随笔档案 文章分类 文章档案 相册 工

  • struts2.0 的action的继承类或接口汇总

    AVA培训)struts2中action用的最多的继承类和接口extends ActionSupport implements ModelDriven, Preparable, ServletRequestAware ,ServletResponseAware中的类和接口的实现[ 2008-03-24 20:58:42] 继承ActionSupport这个类 可以自动获取页面表单中的字段属性的值,确切的说是参数值 接口ModelDriven 应用他的public Object getModel(

  • 一个类继承父类后创建时,代码执行逻辑问题

    一个类继承父类后创建时,代码执行逻辑问题 ONE Goal,ONE Passion! --czfy 说起来继承关系,相信大家都不陌生.可是当一个类继承父类后,代码的真正执行逻辑.可能有写童鞋就不是特别清楚了.下面就把代码的执行顺序分析一下吧. 第一步:我们先创建一个父类BaseFragment public class BaseFragment { Context context; //上下文 String str; public BaseFragment(Context context) {

  • as总结(三) 封装,继承,多态 ,接口,抽象类

    1 封装:黑箱控制成员可见性,没什么好说的 2 继承: 选择性代码重用. 1 方法重载 不支持方法重载,但我们可以模拟出来 as中的switch支持String类型变量,而java中不行 class OverLoad { public function eat(...args):void{ switch(args.length){ case 0: eatNo(); break; case 1: eatOne(args); break; default: break; } } private fu

  • idea中的实现接口时@Override注解问题

    摘要: 用IntelliJ 15打开一个以前的工程,发现代码出现很多关于@Override的错误,编辑器提示:"@Override is not allowed when implementing interface method",怎么会这样子?看来@Override是个有故事的家伙,呵呵! 用IntelliJ 15打开一个以前的工程,发现代码出现很多关于@Override的错误,编辑器提示:"@Override is not allowed when implementi

Tags: