Игнорирование предупреждения о порядке списка инициализации weffc ++ для конкретного кода - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть код ниже:

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 ++ для конкретного кода.Или есть способ исправить это предупреждение?

1 Ответ

0 голосов
/ 30 ноября 2018
Derived::Derived(int x) : Base{ x }, test{} // shut up the compiler.
{
    // Some code and calculation to generate vale of test
    test = val;
}
...