Проблема с указателем на функцию. Как эффективно взаимодействовать с C API (т.е. GSL) из класса C ++?
Этот вопрос, кажется, задавался много раз, например,here1, здесь 2 а такжеhere3.
То, что я пытаюсь сделать, это установить членfunction
C-Structgsl_function
к функции-члену моего класса.
class MyClass{
double foo(double x)
{
return ...;
}
double bar(double x)
{
...
gsl_function F;
// Problem I cant do this (compiler error)
F.function = &(this->foo);
}
};
Третийссылка на сайт выше предлагает решение, я думаю, что оно основано на описанном подходеhere4.
Так что мой вопрос, могу ли я сделать лучше. Есть ли более простой способ? Например, возможно с использованием функции Boost и объектов Bind.
Я оцениваю возможность использования gsl-оболочки, такой как o2scl. Но я немного разочарован, поскольку могу заплатить цену позже, если обертка не в хорошем состоянии. Какие-либо предложения?