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 не нуждается в комментировании, думаю. }В общем, насколько дурно пользоваться таким способом вызова функций?