将派生类的对象传递给基类

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

以上是关于将派生类的对象传递给基类的主要内容,如果未能解决你的问题,请参考以下文章

制作基类指针的向量并将派生类对象传递给它(多态)

将参数传递给基类构造函数

无法将参数 1 从派生指针转换为基类指针引用

将参数传递给超类构造函数

使用java反射将派生对象传递给想要超类的方法?

C ++将派生类的属性设置为从同一基类派生的未知类对象?