如何在 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++ 中的子类中创建父对象数组?的主要内容,如果未能解决你的问题,请参考以下文章