Maison > développement back-end > C++ > Pourquoi l'instanciation d'un objet Blowfish sans arguments produit-elle une erreur « pas de constructeur par défaut » et comment cela peut-il être corrigé ?

Pourquoi l'instanciation d'un objet Blowfish sans arguments produit-elle une erreur « pas de constructeur par défaut » et comment cela peut-il être corrigé ?

Susan Sarandon
Libérer: 2024-11-27 06:40:13
original
176 Les gens l'ont consulté

Why Does Instantiating a Blowfish Object Without Arguments Produce a

Erreur : "aucun constructeur par défaut n'existe pour la classe "Blowfish""

Question :

Lorsque vous tentez d'instancier un objet de la classe Blowfish sans spécifier explicitement d'argument constructeur, le compilateur émet l'erreur message, "aucun constructeur par défaut n'existe pour la classe "Blowfish"." Pourquoi cela se produit-il et comment peut-il être résolu ?

Réponse :

L'absence d'un constructeur par défaut dans la classe Blowfish est intentionnelle. Lorsqu'une classe définit ne serait-ce qu'un seul constructeur, le compilateur ne synthétise plus par défaut un constructeur par défaut.

Solutions :

Pour résoudre cette erreur, vous disposez des options suivantes :

  1. Fournir un constructeur par défaut : Définir un constructeur par défaut qui ne nécessite pas des arguments. Par exemple :
Blowfish() : _algorithm(CBC) {}
Copier après la connexion
  1. Spécifiez un argument lors de l'instanciation de l'objet : Spécifiez explicitement la valeur BlowfishAlgorithm souhaitée lors de la création d'un objet de la classe Blowfish. Par exemple :
Blowfish blowfish(ECB);
Copier après la connexion
  1. Utilisez C 11 = default : Définissez un constructeur qui prend un argument, mais demandez également au compilateur de générer le constructeur qu'il aurait créé si vous n’en aviez pas défini. Cela se fait avec la syntaxe = default . Par exemple :
class GameCryptography {
public:
    GameCryptography(BlofishAlgorithm);

    // Generate the default constructor
    GameCryptography() = default;
};
Copier après la connexion

Remarques supplémentaires :

Notez que les termes « ECB », « CBC », « CFB », etc., sont modes de fonctionnement des algorithmes de chiffrement plutôt que des algorithmes de chiffrement eux-mêmes. L'utilisation de ces termes comme noms d'algorithmes pourrait potentiellement conduire à des malentendus et des erreurs.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal