我知道一个类至少需要在源文件中定义一个虚函数(out of line),否则vtable将会被插入到每个对象文件中。
我有以下情况:
//foo.cpp
struct Foo {
virtual int Bar() { return 1; }
virtual ~Foo() = default;
};
Qt Creator(4.5.2)中的clang代码模型会针对Foo发出-Wweak-table警告。
严格来说,这个警告是正确的,因为虚表将在每个翻译单元中被包含。实际上,它毫无用处,因为无论如何虚表只在foo.o中被发出。
我如何仅针对源文件中定义的类禁用-Wweak-vtables警告?