我制作了一个包含两个类的程序。基类包括其派生类的指针对象。然后,我在基类的构造函数中初始化指针对象。
我的编译器在编译过程中没有给我错误,但是在出现控制台窗口时程序崩溃,派生类的对象给出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()”从构造函数中移至其自己的函数中。