下面的代码说明了这个问题。我正在尝试为仅使用接口(C++ 虚拟类)的 C++ 组件创建 API。我有一个 Base 和 Derived 类,并且有相应的 IBase 和 IDerived 接口,但是当我尝试将 IBase 强制转换为 Derived 时,这会导致错误。错误 C2594:“类型转换”:从“IBase *”到“派生 *”的模糊转换
这似乎是我正在尝试做的一件合理的事情,Java 或 C# 不会对此嗤之以鼻。有没有办法在 C++ 中实现这样的东西
class IBase
{
public :
virtual int method_A(void) = 0;
virtual int method_B(void) = 0;
virtual int method_C(void) = 0;
};
class IDerived : public IBase
{
public :
virtual int method_D(void) = 0;
};
class Base : public IBase
{
int method_A(void) {return 1;};
int method_B(void) {return 2;};
int method_C(void) {return 3;};
};
class Derived : public IDerived, private Base
{
public:
int method_D(void) {return 4;};
};
class HandleDerived
{
public :
int handle_base(IBase * i_base)
{
Derived * derived = (Derived *) i_base;
return derived->method_D();
}
};