E2370 Einfacher Typenname erwartet (C++)
Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index
Um die Interoperabilität zwischen Delphi und C++ sicherzustellen, gibt es Einschränkungen zu den Typennamen in den Parameterlisten der Typen "published closure". Die Parametertypen müssen einfache Typennamen mit dem optionalen Modifizierer "const" sein und in Zeiger- oder Referenznotation formuliert werden.
Wenn Sie einen closure-Typ definieren, müssen die Argumente, die an diesen Typ übergeben werden, den Typ "simple" haben. Templates werden beispielsweise nicht unterstützt. Um eine Referenz auf ein Objekt mit dem Typ "template" an ein "closure" zu übergeben, müssen Sie ein typedef deklarieren, das zu den simple-Typennamen zählt.
Beispiel:
#include <System.hpp>
template <typename T>
struct SomeTemplateType{ T t; };
struct TCppTest : public TObject
{
// Bad
typedef void __fastcall (__closure *foo1)(SomeTemplateType<int> *);
// Good
typedef SomeTemplateType<int> SimpleTypeName;
typedef void __fastcall (__closure *foo2)(SimpleTypeName *);
foo1 FProp1;
foo2 FProp2;
__published:
__property foo1 prop1 = { read=FProp1 }; // Error
__property foo2 prop2 = { read=FProp2 }; // Ok
};