Python mit Anweisung in C ++

8

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:

  1. Needing class A und class B fühlt sich ein wenig ungeschickt an. Gibt es eine bessere Alternative?
  2. Gibt es Nachteile bei der Verwendung von && anstelle von & ? Es würde die Verwendung von temporären Objekten möglich machen (z.B. With w(X(), y); )
tauran 15.07.2012, 11:31
quelle

2 Antworten

9

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%     
Johan Lundberg 15.07.2012, 16:59
quelle
2

Es wird mit der Sprache geliefert und heißt RAII.

%Vor%     
Puppy 15.07.2012 17:16
quelle