首页 > 解决方案 > 忽略特定代码的 weffc++ 初始化列表顺序警告

问题描述

我有以下代码:

class Base {
    // Some code
    Base(int y) {}
}

class Derived : Base {
       int test;
       Derived(int x);
 }

 Derived::Derived(int x) : Base(x)     {
       // Some code and calculation to generate vale of test
       test = val;
  }

我正在使用标志“-Weffc++”进行编译。我收到警告“测试需要在初始化列表中进行初始化。”
但我不能这样做,因为我需要做很少的计算来生成测试值。

所以为了避免这个错误,我确实尝试了'-Wno-reorder'标志,但它没有用。我也不喜欢它,因为它会为所有代码禁用此警告,我只想针对这种特定情况禁用此警告。

我还使用'#pragma GCC diagnostic ignore -Weffc++' 来完成它,它放在 cpp 文件中的构造函数之前,它确实有效。但是我需要在所有要避免此警告的构造函数中添加编译指示。

但是有没有更好的方法来避免特定代码的 Weffc++ 初始化列表顺序警告。或者有没有办法解决这个警告?

标签: c++initializer-listweffc++

解决方案


Derived::Derived(int x) : Base{ x }, test{} // shut up the compiler.
{
    // Some code and calculation to generate vale of test
    test = val;
}

推荐阅读