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:
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?
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
Tags und Links c++ exception-handling boost-python