【发布时间】:2015-07-01 11:19:38
【问题描述】:
对于使用接口的多重继承的实现,我需要帮助...
有一个现有的代码,其接口具有很多功能。实例是使用工厂创建的。
class IBig
{
// Lot of pure virtual functions
};
And his inplementation:
class CBig: public IBig
{
// Implementation
}
我想将接口拆分为多个较小的接口,但它应该在一段时间内与现有代码保持兼容。
这是我尝试做的一个示例:
class IBaseA
{
public:
virtual void DoA() = 0;
};
class IBaseB
{
public:
virtual void DoB() = 0;
};
// The same interface, now based on multiple smaller interfaces
class IBig : public IBaseA, public IBaseB
{
};
class CBaseA: public IBaseA
{
public:
virtual void DoA()
{
printf("DoA\n");
}
};
class CBaseB: public IBaseB
{
public:
virtual void DoB()
{
printf("DoB\n");
}
};
// Inherit from base classes where the implementation is, and from IBig as
// the instance of CBig is returned as IBig.
class CBig: public CBaseA, public CBaseB, public IBig
{
};
这里的问题是无法实例化 CBig 类。编译器说函数 DoA 和 DoB 是纯虚函数,即使它们在 CBaseA 和 CBaseB 中实现。不想再实现函数,只调用基类的函数怎么办?
NB:我知道设计很丑,但这只是暂时的,直到可以更换大接口,并且....我想了解! ;-)
提前致谢!
【问题讨论】:
标签: c++