Je peux surcharger l'opérateur de parenthèses à l'aide de la signature suivante:
char X = (*pMyObj)(2,3);
3 Réponses :
Oui, mais vous ne l'aimerez pas:
pMyObj->operator()(2,3);
Merci! J'avais essayé pmyobj-> opérateur (2,3) code> mais cela ne fonctionnait pas. Je suppose que c'est dégoûtant, peu importe ce que tu fais, mais je pense que je préfère ça!
@chessofred Eh bien, en fait, il y a une autre façon: ne surchargez pas l'opérateur () et utilisez plutôt une fonction avec un nom lisible: Par exemple, PMYOBJ-> itemat (2,3) code>
Wow c'était une question très utile pour moi qui était confrontée à un problème de création d'un pointeur sur la fonction membre opérateur () code> de
std :: uniforme_int_distribution code>. Je peux maintenant utiliser un pointeur de classe et utiliser la fonction mais comment créer un pointeur à la fonction membre directement? Ce qui suit ne semble pas fonctionner pour moi:
int (std :: uniform_int_distribution :: * myfunc) (std :: mt19937_64) = & std :: uniforme_int_distribution :: opérateur code>
Si vous le faites comme ci-dessous
pMyObj->SUB(2,3)
Vous pouvez également créer une référence à l'objet à l'objet et faire qui pourrait être une bonne alternative si votre code sera lu par des personnes pouvant être confondues par p>
PMYOBJ-> Opérateur () (2,3) Code>
Êtes-vous sûr de ne pas éliminer le pointeur? Sinon, vous devrez choisir le moindre de deux maux.