Problem ze wskaźnikiem funkcji. Jak efektywnie współpracować z C API (np. GSL) z klasy C ++?

Wydaje się, że to pytanie zadawano już wiele razy, na przykładtutaj1, tutaj2 itutaj3.

To, co próbuję zrobić, to ustawić członkafunction C-Structgsl_function do funkcji członka mojej klasy.

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

Trzecipołączyć powyżej zapewnia rozwiązanie, myślę, że opiera się na opisanym podejściu do opakowaniatutaj4.

Moje pytanie brzmi, czy mogę zrobić lepiej. Czy istnieje prostszy sposób? Na przykład, prawdopodobnie za pomocą funkcji Boost i obiektów Bind.

Rozważam opcję użycia opakowania gsl, takiego jak o2scl. Ale jestem trochę przekonujący, ponieważ mogę zapłacić cenę później, jeśli opakowanie nie jest dobrze utrzymane. Jakieś sugestie?

questionAnswers(1)

yourAnswerToTheQuestion