Rumah > pembangunan bahagian belakang > C++ > Mengapa \'tiada pembina lalai wujud untuk kelas \'Blowfish\'\' Berlaku dan Bagaimana Ia Boleh Dibetulkan?

Mengapa \'tiada pembina lalai wujud untuk kelas \'Blowfish\'\' Berlaku dan Bagaimana Ia Boleh Dibetulkan?

Barbara Streisand
Lepaskan: 2024-11-28 16:22:12
asal
1059 orang telah melayarinya

Why Does

Ralat Pembina Lalai dalam Permulaan Objek

Mengenkapsulasi fungsi penyulitan dalam kelas Blowfish, anda mengalami ralat semasa cuba mencipta contoh GameCryptography . Mesej ralat, "tiada pembina lalai wujud untuk kelas 'Blowfish'", menunjukkan bahawa pembina lalai tiada.

Apabila kelas tidak mempunyai pembina, pengkompil biasanya menjana pembina lalai tanpa argumen. Walau bagaimanapun, jika pembina bukan lalai ditakrifkan (seperti dalam kes ini), pengkompil mengelak daripada menjana pembina lalai ini.

Penyelesaian

Untuk menyelesaikan ralat, anda boleh sama ada mentakrifkan pembina lalai untuk Blowfish atau mengubah suai pemulaan objek.

1. Menambah Pembina Lalai:

Tambahkan pembina lalai pada kelas Blowfish, seperti:

Blowfish() {}
Salin selepas log masuk

Pembina ini akan memulakan objek tanpa menyatakan algoritma.

2. Menentukan Algoritma dalam Permulaan Objek:

Apabila mencipta tika Blowfish dalam GameCryptography, nyatakan algoritma dengan jelas. Contohnya:

GameCryptography::GameCryptography(unsigned char key[])
{
    _blowfish = Blowfish(CBC);
}
Salin selepas log masuk

3. Menggunakan Permulaan Ahli Lalai C 11:

Dalam C 11 atau lebih baru, anda boleh menggunakan permulaan ahli lalai untuk memulakan ahli secara automatik kepada nilai lalai mereka. Ini membolehkan anda mentakrifkan pembina bukan lalai dan masih mempunyai pembina "seperti lalai":

Blowfish(BlowfishAlgorithm algorithm = CBC);

GameCryptography::GameCryptography(unsigned char key[]) : _blowfish() {}  // Default-initialize _blowfish
Salin selepas log masuk

Nota Terminologi

Mod operasi ( cth., ECB, CBC, CFB) bukanlah algoritma penyulitan itu sendiri. Merujuknya sebagai algoritma boleh menyebabkan kekeliruan.

Atas ialah kandungan terperinci Mengapa \'tiada pembina lalai wujud untuk kelas \'Blowfish\'\' Berlaku dan Bagaimana Ia Boleh Dibetulkan?. 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