我有以下代码:
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”标志,但此方法不起作用。我也不喜欢它,因为它将对所有代码禁用此警告,我只想针对此特定情况禁用此警告。
我还使用了#ppgma GCC诊断忽略-Weffc ++做到了这一点,它恰好位于cpp文件中的构造函数之前,并且确实起作用。但是我需要在所有要避免此警告的构造函数中添加杂注。
但是有什么更好的方法来避免针对特定代码的Weffc ++初始化列表顺序警告。还是有办法解决此警告?
答案 0 :(得分:0)
Derived::Derived(int x) : Base{ x }, test{} // shut up the compiler.
{
// Some code and calculation to generate vale of test
test = val;
}