下面的代碼說明了這個問題。我正在嘗試僅使用接口(C++虛擬類)爲C++組件創建API。我有一個Base和Derived類,並有相應的IBase和IDerived接口,但是當我嘗試將IBase轉換爲Derived時,會導致錯誤。 錯誤C2594:'type cast':從'IBase *'到'Derived *'的模糊轉換如何使用接口(包括派生接口)正確地公開C++ API?
這似乎是一個合理的事情,我試圖去做哪個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();
}
};
使用虛擬繼承 – enobayram 2013-03-11 09:36:48
...並且不使用C風格轉換。 ;-) – DevSolar 2013-03-11 09:48:59