12

我的情况如下::

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”。

4

3 回答 3

14

差不多明白了:

this->x = Parent::x;

this是一个指针。

于 2012-07-17T15:06:22.280 回答
4

通过范围解析运算符访问它将起作用:

x = Parent::x;

但是,我会质疑你想在什么情况下这样做。您的示例使用公共继承来模拟“is-a”关系。因此,如果您有满足此标准的对象,但具有具有不同值和/或不同含义的相同成员,那么这种“is-a”关系具有误导性。可能有一些边缘情况是合适的,但我会说它们绝对是规则的例外。每当您发现自己这样做时,请认真思考为什么

于 2012-07-17T15:39:03.640 回答
0

这只是 Luchian Grigore 和 Anubis 先生提供的解决方案的简要说明,因此如果您对“这是如何工作的”感到好奇,您应该进一步阅读。

C++ 提供了一个所谓的“作用域运算符”( ::),它非常适合您的任务。

此页面提供了更多详细信息。您可以将此运算符与类名 ( Parent) 结合使用以访问父级的x变量。

于 2012-07-17T15:20:15.957 回答