【发布时间】:2019-10-27 02:26:19
【问题描述】:
我想不出更好的标题措辞,所以有点误导,但是,我不是在说孩子访问从其父级继承的变量,这很容易。
我说的是这个:
class Parent {
protected:
Parent *target;
int hp;
}
class Child : public Parent {
public:
void my_func();
}
void Child::my_func() {
target->hp -= 50;
}
但是,如果我尝试编译它,它会抱怨“hp”是“在这种情况下是私有的”。问题是孩子不是试图访问它自己的父母的变量,而是其他一些类,它可能是也可能不是孩子本身。
一个对象可以访问同一个类的另一个对象(内存中的两个独立实例)的所有变量和方法(公共的、受保护的或私有的),所以我认为它也可以使用它,因为它继承自它试图访问其变量的类,但我的假设似乎是不正确的。
有什么建议吗?
附:不要粗鲁或任何事情,但我知道我可以创建 get() 和 set() 方法,但我希望有一种更清洁的方法。
【问题讨论】:
-
这里写的代码中有很多错误(
class关键字大写不正确,继承语法不正确等),我确信这些错误不在原始代码中。获取一个无法编译的最小示例,然后将确切的代码复制并粘贴到此处可能会很有用。 -
@Tim 我以为你在那里和自己对话了一分钟,直到我比较了个人资料
-
是的,我应该为此做点什么。它并不像我想象的那样独特。 :-)
-
呃,是的,我并没有真正关注这一点,现在也不让我编辑它......编辑:我们走了。
-
@Abe:我遇到了同样的问题。幸好两者之一是OP,所以我的FF突出了他的名字。不过,这是一团糟。
标签: c++