【发布时间】:2015-04-28 06:00:34
【问题描述】:
我知道这个警告是什么,需要取消这个警告。是否有任何方法可以使用编译指示或编译器选项来抑制此警告?
【问题讨论】:
-
这听起来像是你真的不应该压制的那种警告。你为什么要删除
void *? -
这通常是由于所有权处理不当造成的。分配内存的人应该是删除它的人。由于您在分配内存时知道类型,因此在删除内存时应该知道它。你为什么在 C++ 中使用 void *。
-
你不应该在任何地方都有“void * p = new void”,那么你为什么要删除一个void指针呢?不要再搞乱类型系统了。你可能使用了太多的指针
-
假设您有一个方法,该方法根据条件通过 new 分配 10 种或更多不同对象类型之一,然后将该新对象存储在 void* 类型的变量中。使用完成后,调用另一个方法删除对象。您只是删除 void* 中的内存,还是进行类似的分配类型检查并实施 10 多个不同的删除调用?如果前者有效并且可以消除警告,则这是一个更清洁的解决方案。
标签: c++11 suppress-warnings gcc-warning