Maison > développement back-end > C++ > Résoudre le problème de 'erreur : 'classe' n'a aucun membre nommé 'fonction'' dans le code C++

Résoudre le problème de 'erreur : 'classe' n'a aucun membre nommé 'fonction'' dans le code C++

王林
Libérer: 2023-08-26 19:52:45
original
1637 Les gens l'ont consulté

解决C++代码中出现的“error: 'class' has no member named 'function'”问题

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.

  1. Fonction membre mal déclarée

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;
}
Copier après la connexion

Solution : Ajoutez la définition de fonction membre correspondante dans l'implémentation de la classe.

void MyClass::myFunction() {
  // 实现代码
}
Copier après la connexion
  1. Les fonctions membres sont définies comme privées ou protégées

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;
}
Copier après la connexion

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() {
  // 实现代码
}
Copier après la connexion
  1. La fonction membre est définie dans la mauvaise portée

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal