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
我有代碼繼承看起來像這樣: B
/\
/ \
/ \
BI D
(template)/
\ /
\/
DI
(template)
[B]ase和[D]erived是包含static方法create()的接口,該方法返回相應實現的實例,即BaseImpl或DerivedImpl。 實現是模板,工廠方法選擇如何在
所以我有2個類,即book和mainscreen,其中book公開從mainscreen繼承。 現在我想通過主屏幕的成員函數使用課本的公共成員函數。 這裏是我的代碼: class book;
class mainscreen:virtual public book
{
protected:
int logged;
public:
void print
我遇到了C++虛擬繼承的問題。 我有一個類層次結構,如下: class Base
{
public:
virtual void Func(){};
int BaseValue;
};
class Derived : virtual public Base
{
public:
void Func(){};
virtual void Func2()
我試圖創建從作爲接着多個類繼承的類,得到一個「菱形」 (d選自B繼承和C. B和C從A 幾乎都繼承): A /\ B C \ / D 現在,我有保存指向基類(一個)鏈表的容器。 當我嘗試顯式地轉換爲指針時(typeid檢查後),我得到以下錯誤: 「無法將指向基類」A「的指針轉換爲派生類」D「的指針 - 基類是虛擬的」 但是,當我使用動態鑄造它似乎工作得很好。 任何人都可以請向我解