2013-03-28 2 views
-1

У меня есть структура с именем Duration, как бы я изменил эту функцию, чтобы она возвращала объект типа Duration? и еще один вопрос: нужно ли мне перегружать функцию, как бы заставить ее принять объект продолжительности?Сделать функцию класса возвращаемого типа

void all(clock_t t, int &hours, int &minutes, int &seconds, int &ticks) { 
    ticks = t % CLOCKS_PER_SEC; 
    seconds = t/CLOCKS_PER_SEC; 
    minutes = seconds/60; 
    seconds %= 60; 
    hours = minutes/60; 
    minutes %= 60; 
} 
+1

В зависимости от определения 'Duration'. Это 'Duration' состоит из этих полей, просто верните созданную продолжительность. – Zeta

+4

Вы должны получить вводную книгу на C++. –

+0

Должен ли я сделать новый объект внутри функции? или я передаю объект? – FJam

ответ

2

Допустим, ваша 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); 

Если перегрузка, вы можете реализовать одну перегрузку с помощью другого, чтобы уменьшить дублирование кода, как это:

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; 
} 
Смежные вопросы