C++ - Принцип вызова разных функций, но с одинаковыми параметрами - Stack Overflow на русском

Опубликовано: 01.09.2018

Делема состоит из следующего, к примеру существует 2 функции си кода, которые в свою очередь принимают одинаковые параметры, но выполняют разные действия, в моем случае локальный, и удаленный файл.

// Выполняет открытие файла локально. my_data* new_path(my_super_struct* data, const char* path); // Может работать по любому доступному протоколу, `file://some_path` // не исключение. my_data* new_location(my_super_struct* data, const char* mrl);

При передачи данных в класс, передается булевое значение откуда открывается файл, и вот тут-то и происходит проблема, что лучше использовать, адрес на функции, или if/else?

Т.е. я могу сделать вызов функций одинаково что по адресу, что через if/else:

void some_void(const char* file_path, bool is_local) { // Первый вариант my_super_data = (*(is_local ? &new_path : &new_location))(some_data, path); // if/else не нуждается в комментировании, думаю. }

В общем, насколько дурно пользоваться таким способом вызова функций?

rss