我有两个基类 - 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;
}
答案 0 :(得分:0)
是和否。
如果要覆盖BaseA
中Derived
的方法,则这些方法可以访问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; }
};