微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++ C'tor 不初始化字段?

如何解决C++ C'tor 不初始化字段?

在 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)) {
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。