Maison >développement back-end >C++ >Pourquoi « aucun constructeur par défaut n'existe pour la classe » apparaît-il en C lors de l'instanciation d'une classe avec une classe incorporée dépourvue de constructeur par défaut ?

Pourquoi « aucun constructeur par défaut n'existe pour la classe » apparaît-il en C lors de l'instanciation d'une classe avec une classe incorporée dépourvue de constructeur par défaut ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-10 00:36:16813parcourir

Why Does

"aucun constructeur par défaut n'existe pour la classe" Erreur en C

Lors de la tentative d'instancier une instance de la classe GameCryptography sans fournir d'argument constructeur , un message d'erreur IntelliSense indiquant qu'aucun constructeur par défaut n'existe pour la classe Blowfish est rencontré.

Cette erreur se produit car le Le constructeur GameCryptography tente d'initialiser une instance intégrée de Blowfish sans fournir d'argument de constructeur. Par défaut, C synthétise un constructeur pour une classe sans celui défini par l'utilisateur. Cependant, si la classe possède un constructeur défini par l'utilisateur, le constructeur par défaut n'est pas synthétisé.

Pour résoudre l'erreur, l'une des stratégies suivantes peut être implémentée :

  • Fournir un constructeur par défaut : Définissez un constructeur par défaut pour la classe Blowfish qui initialise le champ de l'algorithme avec une valeur par défaut, telle que as :
Blowfish() : _algorithm(CBC) {}
  • Supply Constructor Argument : Fournissez un argument de constructeur explicite lors de la création d'une instance de la classe Blowfish, tel que :
GameCryptography(unsigned char key[]) : _blowfish(CBC) {}
  • Utiliser le constructeur par défaut C 11 : En C 11 ou version ultérieure, utilisez le mot-clé default pour demander au compilateur de générer le constructeur par défaut qui aurait été synthétisé automatiquement si aucun constructeur défini par l'utilisateur n'existait, tel que :
class Blowfish {
public:
    Blowfish(BlowfishAlgorithm algorithm) {}
    Blowfish() = default;
};
  • Terminologies correctes : De plus, pensez à utiliser la terminologie correcte. Les modes de fonctionnement (par exemple, BCE, CBC) doivent être désignés comme tels, plutôt que collectivement appelés algorithmes.

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:
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