Maison > Article > développement back-end > Résoudre le problème de "erreur : 'classe' n'a aucun membre nommé 'fonction'" dans le code C++
Résolvez le problème "Erreur : 'classe' n'a aucun membre nommé 'fonction'" dans le code C++
Lors de la programmation en C++, vous rencontrez souvent diverses erreurs de compilation. L'une des erreurs courantes est « erreur : la « classe » n'a aucun membre nommé « fonction » ». Cette erreur indique que la fonction membre appelée n'a pas été trouvée dans une classe. Ci-dessous, nous présenterons plusieurs situations et solutions courantes.
Dans ce cas, le problème vient généralement de l'incohérence entre la définition et l'implémentation de la classe. Cette erreur se produit lorsque nous déclarons une fonction membre dans la définition d'une classe, mais oublions de définir réellement cette fonction dans l'implémentation.
L'exemple de code est le suivant :
class MyClass { public: void myFunction(); // 声明成员函数 }; int main() { MyClass obj; obj.myFunction(); // 调用成员函数 return 0; }
Solution : Ajoutez la définition de fonction membre correspondante dans l'implémentation de la classe.
void MyClass::myFunction() { // 实现代码 }
Si une fonction membre est définie comme privée ou protégée, une erreur sera signalée lorsque la fonction est appelée ailleurs en dehors de la classe.
L'exemple de code est le suivant :
class MyClass { private: void myFunction(); // 私有成员函数 }; int main() { MyClass obj; obj.myFunction(); // 调用私有成员函数 return 0; }
Solution : remplacez la fonction membre privée par publique ou ajoutez la fonction d'interface correspondante à la classe pour appeler la fonction membre privée.
class MyClass { public: void myInterface() { myFunction(); // 调用私有成员函数 } private: void myFunction(); }; int main() { MyClass obj; obj.myInterface(); // 调用接口函数 return 0; } void MyClass::myFunction() { // 实现代码 }
Si une fonction membre est définie dans la mauvaise portée, le compilateur ne pourra pas trouver la fonction membre et signalera une erreur.
L'exemple de code est le suivant :
class MyClass { public: void myFunction(); }; void myFunction() { // 实现代码 } int main() { MyClass obj; obj.myFunction(); // 调用成员函数 return 0; }
Solution : définissez la fonction membre dans la portée de classe correcte.
class MyClass { public: void myFunction(); }; void MyClass::myFunction() { // 实现代码 } int main() { MyClass obj; obj.myFunction(); // 调用成员函数 return 0; }
Résumé
Lorsque nous rencontrons l'erreur « erreur : 'classe' n'a aucun membre nommé 'fonction' » dans le code C++, nous devons vérifier si les situations ci-dessus existent dans le code. Déclarer correctement les fonctions membres, changer les fonctions membres privées en fonctions publiques ou ajouter des fonctions d'interface et définir les fonctions membres dans la portée correcte sont tous des moyens efficaces pour résoudre ce problème. En vérifiant soigneusement le code et en apportant des corrections selon les solutions ci-dessus, nous pouvons résoudre avec succès cette erreur et compiler et exécuter notre programme C++ en douceur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!