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
Susan Sarandonoriginal
2024-11-27 06:40:13133parcourir

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) {}
  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);
  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;
};

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!

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