Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        去年关闭。
                                                                                            
                
        
我尝试删除我的结构

delete it;


并得到通知,此类型不完整。


  警告:
  C4150:删除指向不完整类型“ It”的指针;没有析构函数被调用


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

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

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


并从任何地方调用它;

deleteIterator(it)

最佳答案

调用delete要求完整声明所寻址的type1。将该代码移到翻译单元,该翻译单元将看到it类型的完整声明。



1)考虑一下typeof(it)声明是否为virtual析构函数的区别。

关于c++ - 删除指向不完整类型的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47959504/

10-12 20:41