E2069 Utilisation incorrecte du pointeur de membre (C++)

De RAD Studio
Aller à : navigation, rechercher

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

Les pointeurs sur des membres de classes peuvent être uniquement transmis comme arguments de fonctions ou utilisés avec les opérateurs suivants :

  • opérateurs d'affectation
  • opérateurs de comparaison
  • .*
  • —>*
  • ?:, opérateur conditionnel (ternaire)
  • &&, opérateur AND logique
  • ||, opérateur OR logique

Le compilateur a détecté un pointeur membre utilisé avec un autre opérateur.

Pour appeler un pointeur de fonction membre, vous devez fournir une instance de la classe.

Par exemple :

class A {
public:
   myex();
};
typedef int (A::*Amfptr)();
myex()
{
   Amfptr mmyex = &A::myex;
   return (*mmyex)();  //erreur
}

Le code suivant entraînera une compilation :

class A {
public:
   myex();
};
typedef int (A::*Amfptr)();
foo()
{
   A a;
   Amfptr mmyex = &A::myex;
   return (a.*mmyex)();
}