C'est ce que j'essaie de faire: j'ai une classe avec un membre (atribute) qui est un pointeur de fonction. Dans le créateur, je veux assigner certaines méthodes de la même classe à ce pointeur (en fonction de certaines conditions) et l'utiliser après d'autres méthodes. Par exemple:C++: Est-il possible d'affecter une méthode à un membre de fonction-pointeur (atribute) dans la même classe?
class monton
{
private:
protected:
bool (*comparador)(int a, int b);
inline bool mayor(int a, int b) {return a > b;}
inline bool menor(int a, int b) {return a < b;}
...
public:
monton (bool maximo = true)
{
if(maximo) comparador = mayor;
else comparador = menor;
}
...
};
Quand je compile ce code dans CodeBlocks, je reçois cette erreur:
error: cannot convert ‘monton::mayor’ from type ‘bool (monton::)(int, int)’ to type ‘bool (*)(int, int)’|
Merci beaucoup. J'ai également eu des problèmes pour utiliser mon pointeur de fonction après avoir été désigné. Mais j'ai trouvé que je peux l'utiliser avec cette sintaxe: '(ceci -> * comparador) (x, y)' –
Et j'ai dû asigner le pointeur avec cette sintaxe: 'comparador = & monton :: mayor;' Je me demande si c'est correct et convenable, ou si je fais des problèmes à l'avenir. Merci beaucoup. –
Étant donné la nature de ces fonctions (ne dépendant en aucune façon d'une instance de classe), une meilleure alternative serait de les rendre statiques - elles peuvent ensuite être affectées à un pointeur de fonction. –