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
Barbara Streisandasal
2024-11-28 16:22:121003semak imbas

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

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!

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