virtual-inheritance

    1熱度

    2回答

    class B { public: B(char c = 'a') : m_c(c) {} public: fun(); private: char m_c; }; class C: virtual public B { }; class D: virtual public B { }; class E : public C

    0熱度

    1回答

    我有代碼繼承看起來像這樣: B /\ / \ / \ BI D (template)/ \ / \/ DI (template) [B]ase和[D]erived是包含static方法create()的接口,該方法返回相應實現的實例,即BaseImpl或DerivedImpl。 實現是模板,工廠方法選擇如何在

    0熱度

    1回答

    所以我有2個類,即book和mainscreen,其中book公開從mainscreen繼承。 現在我想通過主屏幕的成員函數使用課本的公共成員函數。 這裏是我的代碼: class book; class mainscreen:virtual public book { protected: int logged; public: void print

    0熱度

    1回答

    我遇到了C++虛擬繼承的問題。 我有一個類層次結構,如下: class Base { public: virtual void Func(){}; int BaseValue; }; class Derived : virtual public Base { public: void Func(){}; virtual void Func2()

    2熱度

    1回答

    在我正在開發的遊戲中,我有兩個C++類(ICollidable和Sprite),它們的屬性Position和Size都實際上繼承了另一個名爲Object的C++類。我有這三個類暴露在python與boost python。在蟒蛇Player類的構造函數看起來像這樣的例子: class Player(Game.ICollidable, Game.Sprite, Game.IKeyboardListe

    3熱度

    1回答

    請看下面的代碼: struct Object; struct Component { Component(Object* obj) { } }; struct Renderable : public virtual Component { virtual void Render() = 0; }; struct AnimationRenderer : pub

    2熱度

    2回答

    確定,所以我具有與下面的代碼的輸出(其爲111222223) #include <iostream> struct C { virtual int eq(const C& other) const { return 1; } }; struct SC : C { virtual int eq(const C& other) const { return 2; } virtual int

    0熱度

    1回答

    我能夠將普通對象作爲副本傳遞給內核函數。但是,當我將虛擬繼承添加到類層次結構時,我收到一條錯誤消息,指出具有用戶定義的副本構造函數的類不能用作內核啓動的參數。但是,我沒有用戶定義的複製構造函數。所以我想這是因爲虛擬繼承的內部實現實現了一些不同類型的複製構造函數。有人可以解釋虛擬繼承是如何實際實現的嗎?是否有任何解決方法,或者在編寫cuda代碼時絕對沒有辦法使用虛擬繼承? 的代碼是這樣的: clas

    0熱度

    2回答

    我試圖創建從作爲接着多個類繼承的類,得到一個「菱形」 (d選自B繼承和C. B和C從A 幾乎都繼承):   A  /\ B   C   \ /   D 現在,我有保存指向基類(一個)鏈表的容器。 當我嘗試顯式地轉換爲指針時(typeid檢查後),我得到以下錯誤: 「無法將指向基類」A「的指針轉換爲派生類」D「的指針 - 基類是虛擬的」 但是,當我使用動態鑄造它似乎工作得很好。 任何人都可以請向我解

    0熱度

    1回答

    由於在C以下代碼++: struct A { A() { f(0); } A(int i) { f(i); } virtual void f(int i) { cout << i; } }; struct B1 : virtual A { B1(int i) : A(i) { f(i); } virtual void f(int i) { co