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?
-
23-08-2019 - |
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?
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
Dans la section des liens liés à cette page même: Comment puis-je typedef un pointeur de fonction qui prend une fonction de son propre type d'argument?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow