Um problema de ponteiro de função. Como eficientemente interface com a API C (ou seja, GSL) da classe C ++?

Esta pergunta parece ter sido feita várias vezes antes, por exemploaqui1, aqui2 eaqui3.

O que estou tentando fazer é definir o membrofunction do C-Structgsl_function para uma função de membro da minha classe.

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

O terceiroligação acima fornece uma solução, eu acho que é baseado na abordagem wrapper descritaaqui4.

Então minha pergunta é que posso fazer melhor. Existe um caminho mais fácil? Por exemplo, possivelmente usando a função Boost e objetos Bind.

Eu estou pesando a opção de usar um wrapper gsl, como o2scl. Mas sou um pouco relutante, já que posso pagar o preço mais tarde se o invólucro não for bem mantido. Alguma sugestão?

questionAnswers(1)

yourAnswerToTheQuestion