我有一个将其他类对象的指针存储为void *的类,但是析构函数遇到问题。 我知道段错误来自此析构函数,因为当我添加(到第一行)
shapeObject = nullptr;
它似乎消失了,但我不希望出现内存泄漏。
~ShapeElem() {
if (shapeType == AClass)
delete static_cast<AClass* >(shapeObject);
else if (shapeType == BClass)
delete static_cast<BClass* >(shapeObject);
shapeObject = nullptr;
}
那我该怎么删除这个空指针shapeObject。
注意:由于这是一项家庭作业,因此我无法使用模板来处理不同的类
我必须使用void *。
答案 0 :(得分:0)
现在可以了。我为ShapeElem设置了默认构造函数 就是这样。
ShapeElem(){
shapeObject = nullptr;
shapeType = ShapeType::AClass;
}
我仍然不确定,但是可以。