У меня есть две практически идентичные функции, которые получают ту же структуру, что и параметр.Очень упрощенная версия моих функций, как показано ниже:
struct Container {
int A;
int B;
}
int return_A_dependent(Container c){
//... identical code for A and B ...
int common_for_A_and_B = 0;
return common_for_A_and_B + c.A;
}
int return_B_dependent(Container c){
// ... identical code for A and B ...
int common_for_A_and_B = 0;
return common_for_A_and_B + c.B;
}
Единственная разница между двумя функциями заключается в их возвращаемых значениях, которые зависят от различных переменных структур.Я хочу объединить эти две функции без проверки во время выполнения.Например, передать параметр flag и добавить оператор if для пересылки возвращаемого значения, как показано ниже:
int return_A_or_B(Container c, bool flag_A) {
// ... identical code for A and B ...
int common_for_A_and_B = 0;
if (flag_A) {
return common_for_A_and_B + c.A;
}
else {
return common_for_A_and_B + c.B;
}
Как я могу обработать это во время компиляции, не используя «if»?Заранее спасибо.