Un pointeur de fonction qui indique une fonction qui prend un objet d'une classe de modèle avec ledit pointeur de fonction comme argument de modèle. Possible?

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

Question

x__x

Je veux faire quelque chose comme ceci:

typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);

Mais je reçois une erreur de compilation:

  

erreur C2065: 'fp': non déclarés   identifiant

Est-il possible de mettre en œuvre ce en quelque sorte?

Était-ce utile?

La solution

Non, ce n'est pas, parce que le type du paramètre de modèle serait lui-même inclure. Cela donnerait à une récursion infinie dans le type.

Si au lieu de la spécialisation de modèle de classe, vous acceptez une classe de base de celui-ci, qui est très possible

struct TemplateBase {

};

typedef long (*fpType)(TemplateBase&, HWND, long, long);

template<fpType FP>
struct BaseWindow : TemplateBase {

};


long sampleFunc(TemplateBase &b, HWND hwnd, long wparam, long lparam) {
  ...
}

int main() {
    BaseWindow<sampleFunc> bw;
    sampleFunc(bw, ...);
}

Que voulez-vous faire avec cela?

Autres conseils

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top