10
votes

Appeler la surcharge de parenthèses donnée un pointeur

Je peux surcharger l'opérateur de parenthèses à l'aide de la signature suivante:

char X = (*pMyObj)(2,3);


2 commentaires

PMYOBJ-> Opérateur () (2,3)


Êtes-vous sûr de ne pas éliminer le pointeur? Sinon, vous devrez choisir le moindre de deux maux.


3 Réponses :


16
votes

Oui, mais vous ne l'aimerez pas:

pMyObj->operator()(2,3);


3 commentaires

Merci! J'avais essayé pmyobj-> opérateur (2,3) 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)


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 () de std :: uniforme_int_distribution . 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



0
votes

Si vous le faites comme ci-dessous

pMyObj->SUB(2,3)


0 commentaires

0
votes

Vous pouvez également créer une référence à l'objet à l'objet et faire xxx

qui pourrait être une bonne alternative si votre code sera lu par des personnes pouvant être confondues par xxx


0 commentaires