多重继承C ++ - BaseA从派生类访问BaseB变量

时间:2014-02-10 00:53:31

标签: c++ inheritance

我有两个基类 - BaseA和BaseB以及派生类派生自BaseA和BaseB。

BaseB定义变量int var (比方说)。 BaseA可以访问变量 var 吗?

我尝试在BaseA中定义虚函数 - virtual int Variable()= 0并定义int Variable(){return var;在BaseB中。但这不起作用。

请告知实现这一目标的最佳方法是什么?

有许多派生类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;
}

1 个答案:

答案 0 :(得分:0)

是和否。

如果要覆盖BaseADerived的方法,则这些方法可以访问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; }
};

Example