Je souhaite avoir un pointeur statique privé sur une fonction de ma classe. Fondamentalement, cela ressemblerait à ceci:Pointeur statique C++ vers la fonction
//file.h
class X {
private:
static int (*staticFunc)(const X&);
...
public:
void f();
};
//file.cpp
void X::f()
{
staticFunc(*this);
}
Ceci me donne une erreur de "symbole externe non résolu". Je sais que les membres statiques doivent être initialisées dans le Cpp aussi, je l'ai essayé ceci:
int (X::*staticFunc)(const X&) = NULL;
mais cela me donne une erreur « initialisation d'une fonction ». Cela me donne une erreur plus grossière si j'essaie de l'initialiser avec une fonction existante. Sans "= NULL", j'obtiens la même erreur.
Merci.
Avez-vous essayé 'staticFunc = NULL;' dans le fichier .cpp? (Note: C'est moi oublier si vous devez redéclarer le type dans le fichier. Cpp, désolé) –
Désolé, j'ai écrit le code sur la course. Je l'ai corrigé maintenant, bien sûr que je passais un paramètre à staticFunc quand je l'utilisais. Et j'écrivais en fait dans le fichier .cpp "int (X :: * staticFunc) (const X &)" au lieu de "int (* X :: staticFunc) (const X &)". Merci beaucoup pour vos réponses, c'était une erreur stupide. – stonecup64