如何解决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 举报,一经查实,本站将立刻删除。