<分区>
我有一个抽象类,当我尝试删除该类的实例时出现一些错误。
class CCobjectBase
{
public:
CCobjectBase();
virtual ~CCobjectBase();
virtual void createPainterPath() = 0;
};
class CTriangle : public CCobjectBase
{
public:
CTriangle();
~CTriangle();
void createPainterPath();
};
CCobjectBase :: ~CCobjectBase(){}
我创建对象如下:
std::vector<CCobjectBase *> m_objectBaseList;
m_objectBaseList.push_back(new CTriangle());
//do stuff with m_objectBaseList
delete m_objectBaseList.at(index);
m_objectBaseList.erase(m_objectBaseList.begin() + index);
我在 ~CTriangle()
“未定义对 CCobjectBase::~CCobjectBase()”的引用中检索到错误。如果我从 CCobjectBase 中删除虚拟析构函数,我会收到警告“删除具有非虚拟析构函数的抽象类类型 CCobjectBase 的对象将导致未定义的行为”,这确实很烦人,但修复会导致更多问题。
更新: 这有点愚蠢,但我尝试运行 qmake -> 全部重建但没有任何反应,但是当我重新启动应用程序时,没有显示任何错误或警告。为什么现在有效?我不知道。