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