删除指向不完整类型

时间:2017-12-24 09:33:53

标签: c++

我尝试删除我的结构

delete it;

并获取通知,此类型不完整。

  

警告:   C4150:删除指向不完整类型的指针'它&#39 ;;没有析构函数叫

我必须在头文件中使用前向声明。

好吧,我认为,使用迭代器在同一个文件中创建删除函数是正确的方法

void deleteIterator(It* it)
{
    delete it;
}

只需从任何地方拨打电话;

deleteIterator(it)

1 个答案:

答案 0 :(得分:4)

调用delete需要完整声明所述类型 1 。将该代码移出到翻译单元,该翻译单元可以看到it类型的完整声明。

1) 考虑一下typeof(it)声明virtual析构函数所带来的区别。