【发布时间】:2013-07-26 23:02:10
【问题描述】:
我有一个抽象类 AUnit,像这样在虚拟纯中包含变量和 getter/setter
class AUnit {int var... int getVar() const = 0 ... }
所有数据都受保护:除了构造函数和析构函数。
我小时候就有这样的狂战士和坦克
class Berserk : public AUnit
{
...
private:
int getVar() const;
在他们的 .cpp 中,我编写了 getter 和 setter 的代码。没什么特别的。
但我还有一个像这样的其他类(例如 foo)
class Foo : public Berserk, public Tank
谁需要访问 Berserk 或 Tank 中的数据,所以我将 private 关键字更改为 protected,这是错误:
Tank.hpp:36:25: erreur: ‘virtual int Tank::getY() const’ is protected
error inside the context
首先,我只是尝试使用 AUnit getter 访问数据,但由于虚拟纯和抽象概念的原因,我想在非纯和公开的 AUnit 的 getType 之后,将我的 AUnit 重新解释为他的真实类型。还是不行,这是我之前告诉你的方案。
只是古典遗产,我能帮忙吗?
【问题讨论】:
-
在
class Foo : public Berserk, public Tank我猜你的意思是私人的,对吧? -
你能再“解释一下”吗?我不确定你的“问题”和你对问题的看法。
-
听起来像diamond of death。
-
@user2624468:你说你用受保护替换了私有,我只看到公共......