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
Lepaskan: 2024-11-27 18:06:12
asal
850 orang telah melayarinya

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;
Salin selepas log masuk
  • Bekalkan Argumen kepada Pembina: Apabila mencipta contoh kelas Blowfish, berikan hujah yang diperlukan secara eksplisit. Contohnya:
Blowfish blowfish(BlowfishAlgorithm::CBC);
Salin selepas log masuk
  • 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;
};
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan