Rumah >pembangunan bahagian belakang >C++ >Mengapa \'tiada pembina lalai wujud untuk kelas \'Blowfish\'\' Berlaku dan Bagaimana Ia Boleh Dibetulkan?
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() {}
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); }
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
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!