Мне нужно вызвать функцию «general_function()», когда установлены два параметра. Как:Головоломка + Указатели функций
.cpp файл
if (var_a == 1) {
general_function();
}
if (var_b == 1) {
generam_function();
}
определение general_function является:
function general_function() {
// Some 40 lines
// Some 20 lines .. *
// Some 40 lines
}
Сейчас ситуация такова, что в обоих вызовов, 20 строк, которые я помеченные * различны. Таким образом, когда var_a установлен, будет выполнен набор из 20 строк, и когда будет задан параметр var_b, будет выполнен другой набор из 20 строк.
Существует множество способов преодоления этих ситуаций. Создавать функции, передавать параметры и т. Д. Но я хотел сделать что-то из мира ООП. И именно поэтому я создал там указатель функций. Таким образом, это то, что я сделал:
файл .h
bool function is_a_set(string str, char* name) {
// Do something
}
bool function is_b_set(string str, char* name) {
// Do something
}
файл .cpp
if (var_a == 1) {
general_function(is_a_set);
}
if (var_b == 1) {
general_function(is_b_set);
}
определение general_function является:
function general_function(bool (*choice)(string, char*)) {
// Some 40 lines
choice(string, char*);
// Some 40 lines
}
Я надеюсь, что это понятно до сих пор. Но я получаю «ошибка: нет функции соответствия для вызова general_function()»
Можете ли вы что-нибудь
'function' не является ключевым словом в C++, это? –
«Есть много способов преодолеть эти ситуации». ?? * Какая ситуация? * Тест 'if' ?? Вы спрашиваете, как условно выполнять код без фактического тестирования состояния? – WhozCraig
функция не является ключевым словом ... имеет тип OP def'd или определяет его как класс? – UpAndAdam