2つの現在のクラスレベルのメンバー変数を受け取り、それらを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;
}
これは正しいtimeval値を返しません。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オブジェクトを設定することと、新しいオブジェクトを作成してその値を設定することとが異なる必要がある理由はありますか?