![](/img/trans.png)
[英]C++ multiple inheritance and access specifiers: inherit from a base class and its derived
[英]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函數。
謝謝。
#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.