C ++: pointeur vers la fonction de membre de la classe à l'intérieur d'une structure non apparentée

StackOverflow https://stackoverflow.com/questions/1463150

Question

Je l'ai fait un peu de lecture en ligne quant à la façon d'aller à ce sujet et je crois que je le fais correctement ... Mon objectif est d'avoir un tableau d'objets de structure qui contiennent des pointeurs vers les fonctions-membres d'un classe.

Voici ce que j'ai jusqu'à présent ...

typedef void (foo::*HandlerPtr)(...);
class foo
{
public:
    void someFunc(...);
    // ...
private:
    // ...
};

struct STRUCT
{
    HandlerPtr handler;
};

STRUCT stuff[]
{
    {&foo::someFunc}
};

Ensuite, lorsque vous appelez la fonction à l'aide (. Substance [0] * gestionnaire) (), avec ou sans arguments (je ne compte en fait d'utiliser des listes d'arguments), je reçois « gestionnaire »: identifiant ... Présence non déclarée

Je dois manquer quelque chose, ne savent pas quoi.

Était-ce utile?

La solution

someFunc () n'est pas une méthode statique, donc vous avez besoin d'une instance d'objet foo pour appeler someFunc () via votre variable pointeur à la méthode, à savoir:

foo f;
f.*(stuff[0].handler)();

Ou:

foo f;
HandlerPtr mthd = stuff[0].handler;
f.*mthd();

Ou, en utilisant des pointeurs:

foo *f = new foo;
f->*(stuff[0].handler)();
delete f;

Ou:

foo *f = new foo;
HandlerPtr mthd = stuff[0].handler;
f->*mthd();
delete f;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top