我的场景如下::
class Parent
{
public:
int x;
}
class Child:public Parent
{
int x; // Same name as Parent's "x".
void Func()
{
this.x = Parent::x; // HOW should I access Parents "x".
}
}
这里是如何从Child的成员函数访问Parent的“X”。
答案 0 :(得分:10)
几乎得到了它:
this->x = Parent::x;
this
是指针。
答案 1 :(得分:3)
通过范围解析运算符访问它将起作用:
x = Parent::x;
但是,我会质疑你想在什么情况下这样做。您的示例使用公共继承来模拟“is-a”关系。因此,如果您的对象符合此条件,但具有不同值和/或不同含义的相同成员,则此“is-a”关系会产生误导。可能存在一些适当的边缘情况,但我会说它们绝对是规则的例外。每当你发现自己这样做时,请仔细思考为什么。
答案 2 :(得分:0)
这只是对Luchian Grigore和Anubis先生提供的解决方案的简要解释,所以如果你对“这是如何工作”感到好奇,你应该进一步阅读。
C ++提供了一个所谓的“范围操作符”(::
),它非常适合您的任务。
this page提供了更多详情。您可以将此运算符与类名(Parent
)组合以访问父级的x
变量。