【发布时间】:2014-03-07 04:51:07
【问题描述】:
我有两个基类 - 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) 不,
BaseA将无权访问var,除非它的static或有BaseB指针
标签: c++ inheritance