texttransformer.jpg

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. DelphiXE2Cpp11 ü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::function TFuncOfInt;

 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::function TMethRef;

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 english

 

 
Letzte Neuigkeiten
29.01.24
Aurora2Cpp: Delphi 7 Konverter [more...]

19.10.23
Delphi2Cpp 2.3: Konvertierung von DFM-Dateien [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


 
Diese Homepage ist aus einfachen Texten mit [Minimal Website ]generiert.

Minimal Website
Minimal Website ist mit Hilfe des TextTransformers hergestellt.

TextTransformer
Der TextTransformer ist gemacht mit dem Borland CBuilder

  borland