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 |
|
28.10.24
Delphi2Cpp 2.5: in Groß- und Kleinschreibung mit Deklarationen übereinstimmende Symbolnamen [more...] |
|
08/26/24
Delphi2Cpp 2.4: Aktualisiert auf RAD Studio 12.1 Athen [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
|