【发布时间】:2021-07-26 18:59:50
【问题描述】:
我在 C++11 中写道:
JobsList::JobEntry::JobEntry(pid_t pid, pid_t jid, const string &cmd, bool is_stopped) : pid(pid), jid(jid), cmd(cmd),
is_stopped(is_stopped) {
time(&insertion_time);
}
但是编译器一直给我警告:
Clang-Tidy: Constructor does not initialize these fields: insertion_time
我怎样才能摆脱这个并初始化 in_time?
【问题讨论】:
-
显示一些 minimal reproducible example - 一个完整的(但减少的)C++ 翻译单元。在此之前,请阅读 this C++ reference 和好的 C++ programming book
-
它不是编译器,它是clang-tidy,一个静态分析工具,给你这个警告。估计是假阳性。你可以压制它。
-
@yeputons 我不能在初始化列表中调用时间函数吗?
-
@stacker 你不能。您可以使用立即调用的 lambda 表达式,但它看起来很难看。最好制作自己的
time()包装器,它返回time_t而不是使用输出参数,然后调用它。
标签: c++ c++11 constructor initialization