У меня есть функция, которая берет блок данных и размер блока и указатель функции в качестве аргумента. Затем он выполняет итерацию по данным и выполняет вычисления для каждого элемента блока данных. Ниже приведена основная информация о том, что я делаю:
int myfunction(int* data, int size, int (*functionAsPointer)(int)){
//walking through the data and calculating something
for (int n = 0; n < size; n++){
data[n] = (*function)(data[n]);
}
}
Функции, которые я передаю как аргументы, выглядят примерно так:
int mycalculation(int input){
//doing some math with input
//...
return input;
}
Это хорошо работает, но теперь мне нужно передать дополнительную переменную моему элементу. Что-то вдоль линий
int mynewcalculation(int input, int someVariable){
//e.g.
input = input * someVariable;
//...
return input;
}
Есть ли элегантный способ добиться этого и в то же время сохранить мою общую дизайнерскую идею?