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 closure 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 closure, les arguments transmis à ce closure doivent être de type simple. Par exemple, les modèles ne sont pas acceptés. Pour transmettre à un closure 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 :



 struct __declspec(delphiclass) foo
 {
      typedef void __fastcall (__closure *foo1)(SomeTemplateType<int> *);
      typedef SomeTemplateType<int> SimpleTypeName;
      typedef void __fastcall (__closure *foo2)(SimpleTypeName *);
 published:
      __property foo1 prop1;  // Erreur
      __property foo2 prop2;  // OK
 };