Dem anonymen Methoden in Delphi entsprechen Lambda-Funktionen in C++. Die Überstzung ist direkt:
Der Typ einer anonymen Methode kann als Referenz einer methode deklariert werden. Delphi2Cpp 2.x übersetzt dies in einen C++ std::function Typ:
type TFuncOfInt = reference to function(x: Integer): Integer;
var adder: TFuncOfInt; begin adder := function(X: Integer) : Integer begin Result := X + Y; end; WriteLn(adder(22)); // -> 42
->
typedef std::functionTFuncOfInt;
TFuncOfInt adder; adder = [&](int X) -> int { int result = 0; result = X + Y; return result; }; WriteLn(adder(22)); // -> 42
An Methodenreferenzen können sowohl anonyme Methoden zugewiesen werden, als auch normale Methoden. In C++ wird hierfür std::bind verwendet. Der Ausdruck für dies Zuweisung wird allerdings ziemlich kompliziert, da std::placeholder's zur Repräsentation der ungebundenen Variablen eingeführt werden müssen.
type TMethRef = Reference to procedure(X: Integer);
TAn3Class = class(TObject) procedure method(X: Integer); end;
procedure Test; var m: TMethRef; i: TAn3Class; begin // ... m := i.method; end;
->
typedef std::functionTMethRef;
class TAn3Class : public System::TObject { typedef System::TObject inherited; public: void method(int X); public: TAn3Class() {} };
void Test() { TMethRef m; TAn3Class* i = nullptr; // ... m = std::bind(&TAn3Class::method, i, std::placeholders::_1); }
english
Letzte Neuigkeiten |
08/26/24
Delphi2Cpp 2.4: Updated to RAD Studio 12.1 Athens [more...] |
29.01.24
Aurora2Cpp: Delphi 7 Konverter [more...] |
[aus Fallstudie...] "Eine Meisterleistung -- Delphi2Cpp hat alle meine Erwartungen weit übertroffen." Tony Hürlimann
virtual-optima
29.08.2011
|
"Ich muss mich nochmal für deinen Einsatz und die Qualität deiner Arbeit bedanken, das ist absolut überdurchschnittlich ..." Gerald Ebner
Significant Software
22.01.2010
|
Diese Homepage ist aus einfachen Texten mit [Minimal Website ]generiert.
|
Minimal Website ist mit Hilfe des TextTransformers hergestellt.
|
Der TextTransformer ist gemacht mit dem Borland
CBuilder
|