我的应用程序崩溃,并显示消息“称为纯虚函数”。我删除了所有纯虚函数并给了它们一个实现ASSERT(false);...
所以它至少应该告诉我崩溃的位置。并且,它没有。所以必须有另一个具有虚函数的位置,对吗?
如何在不使用调试器的情况下调试它?
答案 0 :(得分:4)
我碰巧遇到的纯虚函数调用的最常见原因是:
如果你不想或不能调试,你应该至少放一些trace / log来查找发生的时间/发生的事情。我建议你在一些对象的析构函数中加入一些痕迹。
当销毁派生对象时,虚拟表不再指向派生成员函数。 如果你在对象的剩余接口上调用一个函数,那么你可以进行纯函数调用,因为派生的对象不再存在,只剩下它的超类。