J'essaie d'appeler une méthode initialisée par un pointeur vers une méthode d'une autre classe, j'ai suivi this: mais cela n'a pas fonctionné pour moi.Méthode de classe d'appel non-statique initialisée par pointeur
considérez ceci:
class y
{
public:
int GetValue(int z)
{
return 4 * z;
}
};
class hooky
{
public:
int(hooky::*HookGetValue)(int);
};
int(hooky::*HookGetValue)(int) = (int(hooky::*)(int))0x0; // memory address or &y::GetValue;
int main()
{
hooky h; // instance
cout << h.*HookGetValue(4) << endl; // error
return 0;
}
l'erreur qui produit est:
[Erreur] doit utiliser. 'ou' - '' pour appeler la fonction pointeur vers membre dans 'HookGetValue (...)', par ex. '(... -> * HookGetValue) (...)'
Je suppose que vous devez écrire '(h. * HookGetValue) (4)' à la place? –
@AdrianShum merci beaucoup, mais pourquoi ça marche? S'il te plaît, tu peux me le dire? Je ne comprends pas si c'est pareil. – nikomaster
vérifier ma mise à jour –