Generalisierte Ausnahmeübersetzung für Boost-Python

8

Das aktuelle boost :: python-Beispiel für die Übersetzung einer bestimmten C ++ - Ausnahme in Python sieht folgendermaßen aus:

%Vor%

Dies erfordert leider, dass wir eine spezifische Funktion für jede unserer Ausnahmen schreiben. Wir haben versucht, dies zu vereinfachen, indem wir einen verallgemeinerten Ausnahme-Übersetzer geschrieben haben:

%Vor%

Würde dieses Code-Bit funktionieren, könnten Sie Ausnahmen, die "what ()" implementieren, wie folgt umbrechen:

%Vor%

Leider scheint boost :: python den "Übersetzungs" -Code als Funktion in "boost / python / detail / translate_exception.hpp" (Zeile 61) zu nennen:

%Vor%

In unserem verallgemeinerten Exception-Handler würde dies ein Aufruf von GeneralizedTranslator :: operator () sein, der für g ++ nicht funktioniert und folgendes liefert:

%Vor%

Gibt es einen richtigen Weg dies zu schreiben?

    
André Anjos 02.08.2011, 08:07
quelle

1 Antwort

5

Sie übergeben den this -Zeiger als Übersetzungsfunktion. Dies schlägt fehl, weil ein Zeiger auf ein Objekt nicht als Funktion aufgerufen werden kann. Wenn Sie stattdessen *this übergeben, sollte dies funktionieren (beachten Sie, dass dies das GeneralizedTranslator-Objekt kopiert). Oder Sie können die Registrierung aus dem Konstruktor entfernen und

aufrufen %Vor%     
interjay 02.08.2011, 08:14
quelle