Игнорирование предупреждения о порядке списка инициализации 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 диагностическое игнорирование -Weffc ++’, помещенное непосредственно перед конструктором в файле cpp, и это сработало. Но мне нужно добавить прагму ко всем конструкторам, где я хочу избежать этого предупреждения.

Но есть ли лучший способ избежать предупреждения порядка инициализации списка инициализации Weffc ++ для конкретного кода. Или есть способ исправить это предупреждение?

0

Решение

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]