【问题标题】: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 ...你明白了
  • 我要调用基类构造函数,并以派生类的对象指针为基
  • 请问你的最终申请是什么?
  • 你认为你为什么需要它?

标签: c++ inheritance


【解决方案1】:

我相信你想传递一个指向当前对象的指针。这就是this 的用途。

C() : B(this) { } 

【讨论】:

  • 我对 C++ 有点陌生。我不需要为类指针分配空间吗?
  • @user2033594 不,你没有。 this 只是指向您创建的对象C。但我没有看到将它存储在基类中的好处,因为您只需在基类中使用this
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
相关资源
最近更新 更多