我制作了一个包含两个类的程序。基类包括其派生类的指针对象。然后,我在基类的构造函数中初始化指针对象。

我的编译器在编译过程中没有给我错误,但是在出现控制台窗口时程序崩溃,派生类的对象给出UNHANDLED EXCEPION BAD ALLOCATION错误。我该怎么解决?

这是代码:

class x;

class y
{
    private:

      x *objx; // here is the error
    ...........................

};

class x: public y
{
    ...........................
    ................
};

y::y()
{
     objx=new x(); // bad allocation and the program crashes

     // I have also tried this way by commenting objx=new x();

     *objx=0; // but still the program crashes.
}

最佳答案

由于在派生类中调用构造函数将在父类中调用构造函数,因此看起来您将遇到递归构造问题-这很可能导致异常。

为了避免这种情况,您可以将“ new x()”从构造函数中移至其自己的函数中。

10-08 01:36