【问题标题】:MSVC std::_Pad no virtual destructorMSVC std::_Pad 没有虚拟析构函数
【发布时间】:2014-11-07 15:16:15
【问题描述】:

我正在使用

Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x64

当我这样做时

#include <mutex>
#include <condition_variable>

我明白了

c:\program files (x86)\microsoft visual studio 11.0\vc\include\thr\xthread(172) : error C4265: 'std::_Pad' : class has virtual functions, but destructor is not virtual
         instances of this class may not be destructed correctly

我需要升级到更新版本的 MSVC 吗?

【问题讨论】:

标签: c++ visual-c++ c++11 windows-8


【解决方案1】:

您无需更新。

这是一个在使用虚函数时可能很重要的警告。如果在派生类中分配内存,则需要一个虚拟析构函数并在对象销毁时释放内存。使用 std::mutex 你是安全的(这里有巨大的免责声明)。

您可以使用 #pragma warning 消除此警告。如果您将警告视为错误,则必须摆脱它,但永远不要降低编译器警告级别:

#pragma warning(push)
#pragma warning(disable:4265)
#include <mutex>
#pragma warning(pop)

小心包围警告,你不想禁用整个文件的警告,你可能会错过一些重要的警告。

【讨论】:

    猜你喜欢
    • 2012-04-13
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 2011-08-12
    相关资源
    最近更新 更多