あなたのDuration
構造が次のようなものだとしましょう:
struct Duration {
int hours, minutes, seconds, ticks;
};
all()
メソッドは次のようになります。
Duration all(clock_t t) {
Duration duration;
duration.ticks = t % CLOCKS_PER_SEC;
duration.seconds = t / CLOCKS_PER_SEC;
duration.minutes = duration.seconds / 60;
duration.seconds %= 60;
duration.hours = duration.minutes / 60;
duration.minutes %= 60;
return duration;
}
そして、次のように呼び出されます。
clock_t t = ...;
Duration duration = all(t);
他の質問に答えるために、出力all()
を受け入れるためにオーバーロードする場合は、次のようになります。Duration
void all(clock_t t, Duration &duration) {
duration.ticks = t % CLOCKS_PER_SEC;
duration.seconds = t / CLOCKS_PER_SEC;
duration.minutes = duration.seconds / 60;
duration.seconds %= 60;
duration.hours = duration.minutes / 60;
duration.minutes %= 60;
}
そして、次のように呼び出されます。
clock_t t = ...;
Duration duration;
all(t, duration);
オーバーロードする場合は、次のように、1 つのオーバーロードを別のオーバーロードを使用して実装し、コードの重複を減らすことができます。
Duration all(clock_t t) {
Duration duration;
duration.ticks = t % CLOCKS_PER_SEC;
duration.seconds = t / CLOCKS_PER_SEC;
duration.minutes = duration.seconds / 60;
duration.seconds %= 60;
duration.hours = duration.minutes / 60;
duration.minutes %= 60;
return duration;
}
void all(clock_t t, Duration &duration) {
duration = all(t);
}
またはこれ:
void all(clock_t t, Duration &duration) {
duration.ticks = t % CLOCKS_PER_SEC;
duration.seconds = t / CLOCKS_PER_SEC;
duration.minutes = duration.seconds / 60;
duration.seconds %= 60;
duration.hours = duration.minutes / 60;
duration.minutes %= 60;
}
Duration all(clock_t t) {
Duration duration;
all(t, duration);
return duration;
}