c++中多重繼承的問題和解決方案

下面的代碼有什麼問題,解決方案是什麼?

class A{
public:
    int a;
};
class B: public A{
public;
    int b;
};
class C:public A,public B{
    
};

答:

上面的代碼對於中C所繼承的B也繼承了A。事實上就是重複繼承。對於編譯器來說,上面的定義可以通過。但是,下面的代碼卻會報錯。

C test;
test.a = 10;//包編譯錯,因爲a不知道是c第一個父類的變量,還是第二個的變量。
解決方案:

class A{
    int a;
};
class B: public virtual A{
    int b;
};
class C:public virtual A,public B{
    
};



發佈了18 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章