问题描述
在 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?
解决方法
您有一个初始化列表,其中没有初始化 insertion_time
。
在构造函数的主体中,在字段初始化之后,您通过调用 insertion_time
设置 time()
的值。
Clang-Tidy 然后会警告您该字段尚未初始化但正在使用中。
您可以使用以下内容对其进行初始化:
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),insertion_time(0) {
time(&insertion_time);
}
编辑:
您可以在初始化列表中使用 time()
,但不能使用 time(&insertion_time)
。您必须改为调用 insertion_time(time(nullptr))
。 time()
函数返回正确的值:
JobsList::JobEntry::JobEntry(pid_t pid,insertion_time(time(nullptr)) {
}
,
time_t time (time_t* timer);
所以 time
返回一个 time_t
JobsList::JobEntry::JobEntry(pid_t pid,insertion_time(time(nullptr)) {
}