Как создать массив родительского объекта в дочернем классе в C ++? - PullRequest
0 голосов
/ 26 апреля 2020

Привет. Я пытаюсь получить массив объектов дочернего класса в родительском классе, используя указатель, и пытаюсь инициализировать переменную дочернего класса, используя функции, определенные в дочернем классе. Но выдает ошибку, что созданный дочерний объект находится вне области видимости. Код ломается. Пожалуйста, помогите мне, как это сделать.

#include<iostream>
using namespace std;
class parent
{
public:    
    int y=0;
    void display(){
    cout<<"Value inside parent of y is "<<y;
    }

};
class child: public parent
{  
public:
    int nop;
    parent *ptr;

    void input()
    {
       int x,nop=0;
       parent p;
       *(ptr+nop) = p;
       cout<<"Enter number";
       cin>>x;
       nop++;
       p.y=x;
       cout<<"Value inside child is "*((ptr+nop)).y;
       p.display();
     }
};

int main(){
child c;
c.input();

return 0;
}


1 Ответ

1 голос
/ 26 апреля 2020

Проблема в том, что вы пытаетесь использовать дочерний класс до того, как он будет определен. Вам нужно реорганизовать свой код следующим образом:

class child;
class parent
{  
public:
    int nop;
    child *ptr;

    void input();
};

class child: public parent
{
public:    
    int y;
};

void Parent::input()
{
   int x,nop=0;
   child c;
   *(ptr+nop) = c;
   cout<<"Enter number";
   cin>>x;
   nop++;
   c.y=x;
   cout<<*(ptr+nop).x;
 }

Теперь parent::input определено после class child.

У вас много и много других проблем в вашем коде, но это следует исправить. один из них, и пусть вы добьетесь прогресса в других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...