将派生类的对象传递给基类
Posted
技术标签:
【中文标题】将派生类的对象传递给基类【英文标题】:Passing object of derived class to base class 【发布时间】:2020-05-22 06:05:31 【问题描述】:您好,我有一个派生类,我想将派生类对象的指针传递给基类。 运行代码时出现分段错误。
#include <iostream>
using namespace std;
class A
public:
virtual void x() = 0;
A* a;
;
class B: public A
public:
B(A* x)
a = x;
void x ()
;
class C: public B
public:
C() : B(new C)
;
int main()
C c;
return 0;
谁能帮我提出一个实现这一目标的方法或帮助我修复代码。
【问题讨论】:
C() : B(new C)
?你知道new C
创建新的C
对象,然后调用C
构造函数,然后创建new C
,然后调用C
构造函数,然后..
很确定你有无限递归,创建C
需要创建new C
,这需要创建new C
...你明白了
我要调用基类构造函数,并以派生类的对象指针为基
请问你的最终申请是什么?
你认为你为什么需要它?
【参考方案1】:
我相信你想传递一个指向当前对象的指针。这就是this
的用途。
C() : B(this)
【讨论】:
我对 C++ 有点陌生。我不需要为类指针分配空间吗? @user2033594 不,你没有。this
只是指向您创建的对象C
。但我没有看到将它存储在基类中的好处,因为您只需在基类中使用this
。以上是关于将派生类的对象传递给基类的主要内容,如果未能解决你的问题,请参考以下文章