【发布时间】:2011-05-17 05:40:20
【问题描述】:
我有一个函数,它接受两个当前类级别的成员变量并将它们设置为 timeval 结构,并返回 timeval obj(按值)。
在设置类级别成员 timeval 对象与在每次 get() 调用时创建新 timeval 对象时,我发现了一个问题。
类内
protected:
int time[2];
timeval tv;
// work done on setting the time array
timeval getTimeval()
{
tv.tv_sec = (time_t)time[0];
tv.tv_usec = time[1];
return tv;
}
这不会返回正确的时间值。 tv.tv_sec 将被覆盖,但 tv_usec 保持不变。但是,当我在 get 调用中创建 timeval 对象时,它将返回正确的值。
timeval getTimeval()
{
timeval t;
t.tv_sec = (time_t)time[0];
t.tv_usec = time[1];
return t;
}
是否有任何理由在成员变量上设置 timeval 对象应该不同于创建新对象并设置其值?
【问题讨论】:
-
tv_usec 不需要类型转换?
-
这两种情况应该没有区别。问题出在代码的其余部分。当您在
tv.tv_usec = time[1];设置断点时,您是否看到 tv.tv_usec 没有更改? -
你能发布一个最小的、可编译的问题示例吗?