Un problema de puntero de función. ¿Cómo interactuar eficientemente con la API de C (es decir, GSL) de la clase C ++?

Esta pregunta parece haberse preguntado muchas veces antes, por ejemploaqui1, aqui2 yaqui3.

Lo que estoy tratando de hacer es establecer el miembrofunction de la C-Structgsl_function a una función miembro de mi clase.

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);
    }
};

El terceroenlazar lo anterior proporciona una solución, creo que se basa en el enfoque de envoltura descritoaqui4.

Así que mi pregunta es ¿puedo hacerlo mejor? hay una manera mas facil? Por ejemplo, posiblemente utilizando la función de Boost y los objetos Bind.

Estoy sopesando la opción de usar un envoltorio gsl, como o2scl. Pero estoy un poco releuctante ya que puedo pagar el precio más tarde si la envoltura no está bien mantenida. ¿Alguna sugerencia?

Respuestas a la pregunta(1)

Su respuesta a la pregunta