Rumah >pembangunan bahagian belakang >C++ >Mengapa Kod Saya Membuang \'tiada pembina lalai wujud untuk kelas \'Blowfish\' \'?

Mengapa Kod Saya Membuang \'tiada pembina lalai wujud untuk kelas \'Blowfish\' \'?

Barbara Streisand
Barbara Streisandasal
2024-11-27 18:06:12759semak imbas

Why Does My Code Throw

Pembina Lalai Hilang untuk Kelas "Blowfish": Memahami Ralat

Ralat "tiada pembina lalai wujud untuk kelas "Blowfish"" timbul apabila cuba mencipta contoh kelas Blowfish tanpa memberikan sebarang hujah, walaupun telah menentukan pembina yang memerlukan Argumen BlowfishAlgorithm.

Menaakul Ralat

Secara lalai, apabila kelas tidak mempunyai pembina, pengkompil menjana pembina lalai yang tidak mengambil argumen. Walau bagaimanapun, apabila pembina bukan lalai ditakrifkan (iaitu, satu yang memerlukan hujah), pengkompil menganggap bahawa pengendalian pembina dikendalikan secara eksplisit oleh pembangun dan tidak lagi menjana pembina lalai secara automatik. Oleh itu, menyediakan hujah apabila mencipta tika kelas menjadi wajib.

Penyelesaian

Untuk menyelesaikan ralat ini, anda mempunyai beberapa pilihan:

  • Tambah Pembina Lalai: Tentukan pembina lalai untuk kelas Blowfish yang tidak memerlukan hujah. Contohnya:
Blowfish() = default;
  • Bekalkan Argumen kepada Pembina: Apabila mencipta contoh kelas Blowfish, berikan hujah yang diperlukan secara eksplisit. Contohnya:
Blowfish blowfish(BlowfishAlgorithm::CBC);
  • Gunakan Sintaks Permulaan Ditetapkan (C 11 atau lebih baru): Gunakan pembina yang mengambil hujah dan tambah klausa = lalai untuk menjana pembina lalai. Ini membolehkan kedua-dua bebanan pembina wujud bersama.
class GameCryptography {
public:
    GameCryptography(BlofishAlgorithm); // Constructor with argument

    // Generate a default constructor by delegating to the compiler
    GameCryptography() = default;
};

Nota Tambahan

Perlu diserlahkan bahawa ECB, CBC, CFB, dsb., mewakili mod operasi untuk algoritma penyulitan dan bukannya algoritma penyulitan itu sendiri. Walaupun ia tidak menjejaskan kompilasi, ralat semantik ini boleh mengelirukan pembaca kod.

Atas ialah kandungan terperinci Mengapa Kod Saya Membuang \'tiada pembina lalai wujud untuk kelas \'Blowfish\' \'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn