Ich versuche, etwas Ähnliches wie die python with-Anweisung in C ++ zu implementieren. Da ich vorhabe, es hauptsächlich mit Qt-OpenGL zu verwenden, heißen die Methoden bind
und release
(in python __enter__
, __exit__
).
Code Ich kam auf:
Kopfzeile:
%Vor%cpp:
%Vor%Verwendung:
%Vor%Fragen:
class A
und class B
fühlt sich ein wenig ungeschickt an. Gibt es eine bessere Alternative? &&
anstelle von &
? Es würde die Verwendung von temporären Objekten möglich machen (z.B. With w(X(), y);
) Die With-Anweisung ist eine Möglichkeit in Python zu machen, was in C ++ bereits normal ist. Es heißt RAII: Ressourcenerfassung ist Initialisierung.
In Python wird beim Erstellen eines Klassenobjekts die Methode __init__
aufgerufen (dies ist jedoch keine strenge Garantie). Die Methode __del__
wird vom Speicherbereiniger zu einem bestimmten Zeitpunkt aufgerufen, nachdem das Objekt nicht mehr verwendet wird, aber es ist nicht deterministisch.
In C ++ wird der Destruktor an einem genau definierten Punkt aufgerufen, so dass with
nicht benötigt wird.
Ich schlage vor, Sie verwenden etwas wie Klasse B (keine Notwendigkeit für Klasse A oder With).
%Vor%benutze es so:
%Vor%Tags und Links python c++ with-statement state-management