我正在开发一个项目,该项目有 2 个需要序列化的类(与我的问题相关)。有一段时间,其中一个类编译得很好,另一个类编译时出现以下警告:
...\boost\mpl\print.hpp(51): warning C4308: negative integral constant converted to unsigned type
对于他们两个,我使用 Boost 类导出器来注册类,所以稍后我可以安全地序列化指向它们实例的基类指针,如下所示:
BOOST_CLASS_EXPORT_GUID(ClassName, "ClassName")
所以我慢慢消除了两个类之间的差异,发现警告的来源是:安静编译的类有一个虚拟析构函数,因为我打算让其他类继承它可能需要自己的析构函数。
现在,我也只是给了另一个类一个虚拟析构函数,但是由于我不打算从它继承,这看起来很奇怪。
我的问题是:为什么给类一个虚拟析构函数“修复”这个警告,这个警告的真正含义是什么?BOOST_CLASS_EXPORT_GUID 宏的某些部分是否创建了一个从我的类或其他东西继承的类?