【发布时间】:2014-12-13 01:29:36
【问题描述】:
在 CentOS 6.5 中,我有一个类 List 像:
// list.hpp
namespace foo
{
class List
{
public:
virtual int reserveMem ( int size) = 0;
virtual int Insert ( int val) = 0;
virtual int Find ( int val) = 0;
virtual bool Empty() = 0;
};
}
它是共享库源代码的一部分。而且我可以使用 g++(版本 4.4.7)构建整个库而不会出现任何错误或警告消息。使用的编译标志是
-g -fPIC -Wall -Wextra -Werror
然后我们有另一个应用程序,它只包含一个头文件,其中包含这个头文件并得到:
list.hpp:14: 错误:'class List' 具有虚函数和可访问的非虚析构函数
警告信息有效。但是当我构建库时,g++ 从不抱怨它。有谁知道为什么?
【问题讨论】:
-
因为你从未创建过 List 类型的对象,我猜
-
为你的类定义一个虚拟析构函数,它就会消失。虚拟 ~List() {}
-
你的问题标题很误导人,警告与纯虚析构函数无关