【发布时间】:2018-11-30 05:20:03
【问题描述】:
我有以下代码:
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++ 初始化列表顺序警告。或者有没有办法解决这个警告?
【问题讨论】:
-
“但我不能这样做,因为我需要做一些计算来生成测试值” - 你仍然可以这样做:
test([]{ /* calculations here */; returrn result;}()) -
不仅计算我需要连接一些外部库和一些初始化代码来生成值,所以把整个代码放在那里也不是一个好主意,还有更多的变量使用相同的代码用于初始化。
标签: c++ initializer-list weffc++