我正在使用
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?
答案 0 :(得分:2)
您不需要更新。
使用虚拟功能时,这是一个很重要的警告。如果在派生类中分配内存,则需要一个虚拟析构函数并释放内存以消除对象。使用std :: mutex你很安全(这里有很大的免责声明)。
您可以使用 #pragma warning 删除此警告。如果将警告视为错误,则必须将其删除,但不要降低编译器警告级别:
#pragma warning(push)
#pragma warning(disable:4265)
#include <mutex>
#pragma warning(pop)
小心处理警告,您不想禁用整个文件的警告,您可能会错过一些重要警告。