Ein Problem mit dem Funktionszeiger. Wie kann eine effiziente Schnittstelle mit der C-API (dh GSL) aus der C ++ - Klasse hergestellt werden?

Diese Frage scheint zum Beispiel schon mehrfach gestellt worden zu seinhier1, here2 undhere3.

Was ich versuche zu tun ist, setzen Sie das Mitgliedfunction der C-Strukturgsl_function zu einer Mitgliedsfunktion meiner Klasse.

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

Der dritteVerknüpfung oben bietet sich eine lösung an, die meiner meinung nach auf dem beschriebenen wrapper-ansatz basierthere4.

Meine Frage ist also, ob ich es besser machen kann. Gibt es einen einfacheren Weg? Zum Beispiel möglicherweise mithilfe von Boost's function und Bind objects.

Ich überlege, ob ich einen gsl-Wrapper wie o2scl verwenden kann. Aber ich bin etwas zurückhaltend, da ich den Preis möglicherweise später bezahle, wenn der Wrapper nicht gut gewartet ist. Irgendwelche Vorschläge?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage