[英]Virtual Classes Multiple Inheritance
我有以下這種情況:
class RenderObject {
public:
virtual void sendToGPU() = 0;
virtual void removeFromGPU() = 0;
};
class Object3D : public RenderObject {
public:
virtual char getType() = 0;
};
class IGroup : public RenderObject {
public:
void sendToGPU(); // implementation of RenderObject's virtual method
void removeFromGPU(); // implementation of RenderObject's virtual method
};
class Group : public Object3D, public IGroup {
public:
char getType(); // implementation of Object3D's virtual method
};
並且Group類繼承了RenderObject兩次。 我知道這是多重繼承中的一個常見問題,但是我真的不知道如何解決它,因為這是我第一次面對它。 即使知道這是一個常見問題,我也找不到解決方案,該解決方案考慮了其中一個父級(IGroup)的先前實現。
一個解釋這種語言機制如何工作的解決方案將不勝感激。
這是需要虛擬繼承的經典示例。
通過提供virtual
關鍵字,可以消除模棱兩可的層次結構問題。
將您的代碼更改為:
class Object3D : public virtual RenderObject {
public:
virtual char getType() = 0;
};
class IGroup : public virtual RenderObject {
public:
void sendToGPU(); // implementation of RenderObject's virtual method
void removeFromGPU(); // implementation of RenderObject's virtual method
};
檢查以下鏈接以獲取更多信息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.