How to access parent class's data member from child class, when both parent and child have the same name for the dat member

前端 未结 3 2472
粉色の甜心
粉色の甜心 2021-02-20 18:17

my scenario is as follows::

class Parent
{
public:
int x;
}

class Child:public Parent
{
int x; // Same name as Parent\'s \"x\".

void Func()
{
   this.x = Paren         


        
相关标签:
3条回答
  • 2021-02-20 18:51

    Almost got it:

    this->x = Parent::x;
    

    this is a pointer.

    0 讨论(0)
  • 2021-02-20 19:05

    It's only a brief explaination of solutions provided by Luchian Grigore and Mr. Anubis, so if you are curious 'how this works', you should read it further.

    C++ provides a so-called, "scope operator" (::), which is perfectly suited to your task.

    More details are provided at this page. You can combine this operator with class name (Parent) to access parent's x variable.

    0 讨论(0)
  • 2021-02-20 19:12

    Accessing it via the scope resolution operator will work:

    x = Parent::x;
    

    However, I would question in what circumstances you want to do this. Your example uses public inheritance which models an "is-a" relationship. So, if you have objects that meet this criteria, but have the same members with different values and/or different meanings then this "is-a" relationship is misleading. There may be some fringe circumstances where this is appropriate, but I would state that they are definitely the exceptions to the rule. Whenever you find yourself doing this, think long and hard about why.

    0 讨论(0)
提交回复
热议问题