E2370 Nom de type simple attendu (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Erreurs et avertissements du compilateur (C++) - Index

Pour garantir l'interopérabilité entre Delphi et C++, il existe des restrictions sur les noms de type mentionnés dans les listes de paramètres des types de clôture publiés. Les types de paramètres doivent être des noms de type simple avec un modificateur const et une notation de pointeur ou de référence facultatifs.

Ainsi, lorsque vous déclarez un type de clôture, les arguments transmis à cette clôture doivent être de type simple. Par exemple, les modèles ne sont pas acceptés. Pour transmettre à une clôture une référence à un objet de type modèle, vous devez déclarer un typedef, qui compte comme un nom de type simple.

Exemple :

 #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
};