gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:55:30 27 4
gpt4 key购买 nike

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

BaseB 定义了一个变量 int var (say)。 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;
}

最佳答案

是也不是。

如果您在 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; }
};

Example

关于c++ - 多重继承 C++ - BaseA 从派生类访问 BaseB 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667345/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com