簡體   English   中英

多重繼承C ++-從派生類訪問BaseA變量

[英]Multiple inheritance C++ - BaseA access BaseB variable from derived class

我有兩個基類-BaseA和BaseB,以及派生自BaseA和BaseB的派生類。

BaseB定義了一個變量int var (例如)。 BaseA可以訪問變量var嗎?

我嘗試在BaseA中定義虛擬函數-virtual int Variable()= 0並定義int Variable(){return var; }。 但這是行不通的。

請告知實現此目標的最佳方法是什么?

有許多具有不同實現的派生類C,我想避免在每個派生類中定義Set函數。

謝謝。

示例代碼-http://ideone.com/hFjvua

#include <iostream>
using namespace std;

class A
{
public:
    int Add(int x) { return Get() + x; }
    virtual int Get() = 0;
};

class B
{
public:
    int Get() {return a;}
protected:
    int a;
};


class C : public A, public B
{
public:
    void Set(int x) { a = x; }
    //int Get() { return a; }
};

int main() {
    C c;
    c.Set(5);
    std::cout << c.Add(3) << std::endl;
    return 0;
}

是的,沒有。

如果要從Derived BaseA覆蓋方法,則這些方法確實可以訪問BaseB::var 如果您不重寫這些方法,則BaseA定義中的任何方法都不會對BaseB了解。

class A
{
public:
    virtual int Get() = 0;
};

class B
{
public:
    int a;
};

class C : public virtual A, public virtual B
{
public:
    int Get() { return a; }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM