У меня есть функция bisectionMethod, которая принимает функцию как один из ее аргументов. Для целей и целей bisectionMethod аргумент функции, который он принимает, имеет только один аргумент, который оптимизируется. Но я хотел бы передать любой тип функции (с любым количеством аргументов) функции bisectionMethod. Я использую функцию указателя в качестве аргумента в функции bisectionMethod, но для этого требуется, чтобы я точно указывал, сколько аргументов входит в эту функцию указателя. Какое лучшее обходное решение для этого?Передача функции (с переменным числом аргументов!) В качестве аргумента
Например, я пытаюсь сделать что-то вроде этого:
double bisectionMethod(double xMinimum, double xMaximum, double maxError, double (*rootFunc)(double))
{
...
return ret;
}
double foo1(double x1, double y1){return x1 * y1;}
double foo2(double x2, double y2, double z2){return x2 * y2 * z2;}
int main(){
// I want to first be able to set y1 in foo1.
// Then I want to solve for x1
bisectionMethod(5, 250, 0.1, foo1(x1));
// I want to also be able to use bisectionMethod with foo2
// I want to first be able to set x1, and y1 in foo2.
// Then I want to solve for z1
bisectionMethod(5, 250, 0.1, foo1(z1));
return 0;
}
Я надеюсь, что пример имеет смысл. Я знаю, что это немного странно. Любая помощь будет оценена по достоинству. Благодаря!
Просто используйте выведенную параметр типа и 'зОго :: bind'. – chris
Как насчет C++ 11 лямбда? –
Или 'boost: bind' – Mine