我的情况如下::
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”。
我的情况如下::
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”。
差不多明白了:
this->x = Parent::x;
this
是一个指针。
通过范围解析运算符访问它将起作用:
x = Parent::x;
但是,我会质疑你想在什么情况下这样做。您的示例使用公共继承来模拟“is-a”关系。因此,如果您有满足此标准的对象,但具有具有不同值和/或不同含义的相同成员,那么这种“is-a”关系具有误导性。可能有一些边缘情况是合适的,但我会说它们绝对是规则的例外。每当您发现自己这样做时,请认真思考为什么。
这只是 Luchian Grigore 和 Anubis 先生提供的解决方案的简要说明,因此如果您对“这是如何工作的”感到好奇,您应该进一步阅读。
C++ 提供了一个所谓的“作用域运算符”( ::
),它非常适合您的任务。
此页面提供了更多详细信息。您可以将此运算符与类名 ( Parent
) 结合使用以访问父级的x
变量。