Notes d'étude C ++ - Erreur d'appel illégale d'une fonction membre non statique

C Study Notes Illegal Call Error Non Static Member Function



Écrivez un programme aujourd'hui et avez trouvé une erreur d'appel illégale d'un membre non statique
La raison originale est:

1 Les fonctions membres statiques sont équivalentes aux fonctions globales, avec une seule restriction d'espace de nom de classe. Une fonction membre statique est une fonction d'une classe. Il n'est pas nécessaire de spécifier qu'un objet d'instance fonctionne. Il peut être appelé soit par la classe appelant sa fonction membre statique, soit par son objet d'instance. Remarque: les fonctions membres statiques ne peuvent accéder qu'aux variables membres statiques et aux fonctions membres statiques.



2. Il existe de nombreuses instances d'objet de la même classe et chaque instance a sa propre valeur de variable membre différente. Chaque instance manipule ses variables membres via des fonctions membres. Par conséquent, l'appel de fonction membre doit clairement indiquer quel objet instance fonctionne. Remarque: bien sûr, les fonctions membres de classe peuvent également accéder à des variables membres statiques ou à des fonctions membres statiques



L'exemple suivant illustre



class Test { public: int f() { cout << 'member function' << endl } static int g() { cout << 'static member function' << endl } public: enum { size_f = sizeof(f()), // error, illegal call of non-static member function size_g = sizeof(g()) // ok } } int main() { Test::g() // ok Test::f() // error, illegal call of non-static member function Test t t.g() // ok t.f() // ok }