如何在 C++ 中的子类中创建父对象数组?

Posted

技术标签:

【中文标题】如何在 C++ 中的子类中创建父对象数组?【英文标题】:How to create an array of parent object in child class in c++? 【发布时间】:2020-04-26 10:19:52 【问题描述】:

您好,我正在尝试使用指针在父类中创建子类的对象数组,并尝试使用子类中定义的函数初始化子类变量。但是创建的子对象不在范围内会引发错误。代码正在破坏。请帮助我如何做到这一点。

#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;



【问题讨论】:

parent 不必知道 child,在 parent 的构造函数中记住实例。你永远不会初始化 ptr 你不能在没有未定义行为的情况下取消引用它 为什么需要在子类中有一个父对象数组?我认为您需要重新设计代码。或澄清更多你在做什么。 你已经显着改变了你的问题/代码。这不是正确的做法。 【参考方案1】:

您遇到的问题是您试图在定义之前使用子类。你需要像这样重新组织你的代码

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 之后。

您的代码中还有很多其他问题,但这应该可以解决其中一个问题并让您在其他问题上取得一些进展。

【讨论】:

以上是关于如何在 C++ 中的子类中创建父对象数组?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中的类中创建类对象的动态数组

如何在 C++ 中创建参数化对象数组?

在 C++ 中创建动态对象的动态数组

C++获取基类指针所指子类对象的类名

如何在多维数组/网格c ++中创建List

在 C++ 中使用另一个类的对象计数在一个类中创建一个数组