我有两个基类 - 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
我是一名优秀的程序员,十分优秀!