Maison développement back-end C++ Erreur C++ : Le constructeur doit être déclaré dans l'espace public, comment y faire face ?

Erreur C++ : Le constructeur doit être déclaré dans l'espace public, comment y faire face ?

Aug 21, 2023 pm 08:26 PM
Constructeur c++ Gestion des erreurs

En programmation C++, le constructeur est une fonction importante utilisée pour initialiser les variables membres d'une classe. Il est automatiquement appelé lors de la création d'un objet pour garantir une initialisation correcte de l'objet. Le constructeur doit être déclaré dans la classe, mais vous rencontrerez parfois le message d'erreur « Le constructeur doit être déclaré dans la zone publique ».

Cette erreur est généralement causée par un modificateur d'accès incorrect du constructeur. En C++, les variables membres et les fonctions membres d'une classe ont un modificateur d'accès, notamment public, privé et protégé. Public signifie que le membre est accessible à l'intérieur et à l'extérieur de la classe, private signifie qu'il n'est accessible qu'à l'intérieur de la classe et protected signifie qu'il n'est accessible qu'à l'intérieur de la classe et de ses classes dérivées.

Dans la définition de la classe, si le modificateur d'accès déclaré par le constructeur n'est pas public, le compilateur affichera un message d'erreur "Le constructeur doit être déclaré dans la zone publique". Par conséquent, pour résoudre ce problème, il vous suffit de modifier le modificateur d'accès du constructeur en public.

Ce qui suit est un exemple de code :

class Student {
 private:
  string name;
  int age;

 public:
  Student(string n, int a) {
    name = n;
    age = a;
  }

  void display() {
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
  }
};

int main() {
  Student s("Tom", 18);
  s.display();
  return 0;
}

Dans le code ci-dessus, le constructeur est défini comme une fonction membre publique de la classe, afin qu'il puisse être consulté et appelé en dehors de la classe. Si l'accessibilité du constructeur est définie sur privée ou protégée, un message d'erreur "Le constructeur doit être déclaré dans la zone publique" sera affiché.

En plus de changer l'autorisation d'accès du constructeur en public, nous pouvons également utiliser l'abréviation d'autorisation d'accès dans la définition de la classe :

class Student {
  string name;
  int age;

 public:
  Student(string n, int a) {
    name = n;
    age = a;
  }

  void display() {
    cout << "Name: " << name << endl;
    cout << "Age: " << age << endl;
  }
};

De cette façon, nous pouvons omettre les mots-clés privés et publics et définir le constructeur sur public en défaut.

En bref, lorsque vous rencontrez l'erreur "Le constructeur doit être déclaré dans la zone publique", vous devez d'abord vérifier si le modificateur d'accès du constructeur est public, et suivre les règles de droits d'accès du C++ pour vous assurer que les variables membres et les membres de la classe Functions sont accessibles et appelés correctement.

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!

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1604
276
Que dois-je faire si l'application ne peut pas démarrer normalement (0xc0000906)? Voir la solution ici Que dois-je faire si l'application ne peut pas démarrer normalement (0xc0000906)? Voir la solution ici Aug 13, 2025 pm 06:42 PM

Lors de l'ouverture du logiciel ou du jeu, une invite apparaît soudainement que "l'application ne peut pas démarrer normalement (0xc0000906)" apparaît, et de nombreux utilisateurs seront confus et ne savent pas par où commencer. En fait, la plupart de ces erreurs sont causées par la corruption de fichiers système ou les bibliothèques d'exécution manquantes. Ne vous précipitez pas pour réinstaller le système. Cet article vous fournit plusieurs solutions simples et efficaces pour vous aider à restaurer rapidement le programme à exécuter. 1. Quelle est l'erreur de 0xc0000906? Le code d'erreur 0xc0000906 est une exception de démarrage courante dans les systèmes Windows, ce qui signifie généralement que le programme ne peut pas charger les composants système nécessaires ou l'exécution de l'environnement lors de l'exécution. Ce problème se produit souvent lors de l'exécution de grands logiciels ou de jeux. Les principales raisons peuvent inclure: la bibliothèque d'exécution nécessaire n'est pas installée ou endommagée. Le package d'installation du logiciel est infini

Comment corriger MSVCP71.dll dans votre ordinateur? Il n'y a que trois méthodes requises Comment corriger MSVCP71.dll dans votre ordinateur? Il n'y a que trois méthodes requises Aug 14, 2025 pm 08:03 PM

L'ordinateur invite "MSVCP71.DLL est absent de l'ordinateur", ce qui est généralement dû au fait que le système manque de composants en cours d'exécution, ce qui fait que le logiciel ne charge pas normalement. Cet article analysera profondément les fonctions du fichier et la cause profonde de l'erreur, et fournira trois solutions efficaces pour vous aider à restaurer rapidement le programme à exécuter. 1. Qu'est-ce que msvcp71.dll? MSVCP71.DLL appartient au fichier de bibliothèque d'exécution de base de Microsoft Visualc 2003 et appartient au type de bibliothèque de liens dynamiques (DLL). Il est principalement utilisé pour prendre en charge les programmes écrits en C pour appeler les fonctions standard, les modèles STL et les modules de traitement de base de données. De nombreuses applications et jeux classiques développés au début des années 2000 reposent sur ce fichier à exécuter. Une fois le fichier manquant ou corrompu,

C Exemple de surcharge de l'opérateur C Exemple de surcharge de l'opérateur Aug 15, 2025 am 10:18 AM

La surcharge de l'opérateur en C permet d'attribuer de nouveaux comportements des opérateurs standard aux types personnalisés, 1. Renvoie de nouveaux objets via la surcharge de la fonction membre; 2. Overload = modifier l'objet actuel et la référence de retour; 3. Fonction d'amie surcharge

C vecteur de cordes Exemple C vecteur de cordes Exemple Aug 21, 2025 am 04:02 AM

L'utilisation de base de STD :: Vector comprend: 1. Declare Vector; 2. Ajouter des éléments avec push_back (); 3. Initialiser avec la liste d'initialisation; 4. Transfert de boucle avec portée pour; 5. Éléments d'accès via l'index ou le dos (); 6. Affectation directe des valeurs pour modifier les éléments; 7. Supprimer les éléments finaux avec pop_back (); 8. Appelez la taille () pour obtenir le nombre d'éléments; Il est recommandé d'utiliser Constauto et d'éviter de copier, de pré-alloquer la réserve () pour améliorer les performances et faire attention à la vérification qu'il n'est pas vide avant l'accès. Cette structure de données est un moyen efficace et préféré de gérer les listes de chaînes.

std :: map vs std :: non ordered_map en c std :: map vs std :: non ordered_map en c Aug 14, 2025 pm 06:53 PM

En C, le choix de STD :: Map et STD :: Unordred_map dépend des exigences spécifiques. 1. Différentes structures sous-jacentes: MAP STD :: est implémenté en fonction des arbres rouges et noirs, avec des clés stockées dans l'ordre, l'ordre croissant par défaut et la complexité de la recherche et de l'insertion est O (Logn); STD :: Unordred_map utilise une table de hachage, non ordonnée, et la complexité moyenne de la recherche et de l'insertion est O (1), et le pire est O (n). 2. Performances d'insertion et frais généraux de mémoire: l'insertion de la carte nécessite le maintien de la structure des arbres et est moins efficace; L'insertion non ordonnée_map est plus rapide mais consomme plus de mémoire et peut être optimisée via réserve (). 3. Fonction de comparaison personnalisée: MAP prend en charge la fonction de comparaison personnalisée, non ordonnée

Comment travailler avec std :: variant en c Comment travailler avec std :: variant en c Aug 14, 2025 am 11:32 AM

La variante STD :: est une union sécurisée de type introduite par C 17. Il peut maintenir en toute sécurité la valeur de l'un des types spécifiés. Il peut réaliser un accès sécurisé et une vérification des types via des méthodes telles que STD :: Get, Std :: Holds_Alternative, Std :: Visit et Std :: get_if. Combiné avec STD :: monostat, les valeurs facultatives peuvent être simulées. Il est recommandé d'utiliser STD :: Visitez pour la distribution de type et éviter les listes de grandes types pour améliorer la maintenabilité, et finalement assurer la sécurité des types et la sécurité des exceptions.

Comment écrire un client / serveur TCP simple en C Comment écrire un client / serveur TCP simple en C Aug 17, 2025 am 01:50 AM

La réponse est que l'écriture d'un client et serveur TCP simples nécessite l'interface de programmation de socket fournie par le système d'exploitation. Le serveur termine la communication en créant des prises, des adresses de liaison, en écoutant les ports, en acceptant les connexions et en envoyant et recevant des données. Le client réalise l'interaction en créant des sockets, en se connectant aux serveurs, en envoyant des demandes et en recevant des réponses. L'exemple de code montre l'implémentation de base de l'utilisation de l'API Socket Berkeley sur Linux ou MacOS, y compris les fichiers d'en-tête nécessaires, les paramètres du port, la gestion des erreurs et la version des ressources. Après la compilation, exécutez d'abord le serveur, puis exécutez le client pour obtenir une communication bidirectionnelle. La plate-forme Windows doit initialiser la bibliothèque WinSock. Cet exemple est un modèle d'E / S de blocage, adapté à l'apprentissage de la programmation de base de socket.

C Faux Exemple de partage C Faux Exemple de partage Aug 16, 2025 am 10:42 AM

Le falsification se produit lorsque plusieurs threads modifient différentes variables dans la même ligne de cache, entraînant une défaillance du cache et une dégradation des performances; 1. Utilisez le remplissage de la structure pour faire de chaque variable exclusivement occuper une ligne de cache; 2. Utilisez Alignas ou Std :: Hardware_destructive_interference_Size pour l'alignement de la mémoire; 3. Utilisez des variables de thread-locales pour enfin fusionner les résultats, évitant ainsi les pseudo-partageurs et l'amélioration des performances des programmes multi-thread.

See all articles