#include "stdafx.h"
class Inter
{
public:
virtual void* GetInter(int i) =0;
};
class In0
{
public:
virtual void P0() =0;
};
class In1
{
public:
virtual void P1() =0;
};
class Imp : public Inter, public In0, public In1
{
public:
/**
* losted type
**/
virtual void* GetInter(int i)
{
switch( i )
{
case 0 :
{
/**
* cast to In0*
**/
return (In0*)this;
}
case 1 :
{
return (In1*)this;
}
default:
break;
}
return NULL;
}
virtual void P0()
{
std::cout<<"p0...."<<std::endl;
}
virtual void P1()
{
std::cout<<"p1...."<<std::endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Inter* b = new Imp();
/**
* virtual ptr inter, in0, in1
**/
In0* in0 = (In0*)b->GetInter(0);
if ( in0 )
{
in0->P0();
}
return 0;
}
本文通过一个具体的 C++ 代码示例展示了如何在一个类中实现多个接口,并通过虚拟指针进行类型转换,从而调用不同接口的方法。该示例有助于理解 C++ 中的多态性和接口实现。

629

被折叠的 条评论
为什么被折叠?



