Saya memiliki kode yang ada ini di mana mereka memiliki kelas dan metode inisialisasi di kelas itu. Diharapkan setelah objek kelas dibuat, mereka perlu memanggil inisialisasi di atasnya.
Alasan mengapa metode inisialisasi ada Objek akan dibuat lebih awal untuk memiliki cakupan global dan kemudian metode inisialisasi dipanggil nanti setelah memuat dll yang tergantung padanya.
Masalah dengan memiliki inisialisasi Kelas sekarang memiliki bool ini diinisialisasi yang perlu diperiksa di setiap metode sebelum melanjutkan dan mengembalikan kesalahan jika tidak diinisialisasi. Sederhananya, itu adalah rasa sakit yang besar.
Salah satu solusi yang mungkin Inisialisasi dalam konstruktor. Hanya memiliki pointer ke objek dalam lingkup global. Buat objek yang sebenarnya setelah dll dimuat.
Masalah dengan solusi di atas Siapa pun yang membuat objek dari kelas ini perlu tahu bahwa itu perlu dibuat hanya setelah dll dimuat atau yang lain itu akan gagal.
Apakah ini dapat diterima?
call_once
di C ++ 11 . Proyek-proyek yang belum menggunakan C ++ 11 harus mempelajari bagaimana call_once diimplementasikan dalam C ++ 11 (fokus pada masalah apa yang dipecahkannya, dan kemudian bagaimana), dan kemudian mengimplementasikannya kembali dalam rasa C ++ mereka (basi). Dibutuhkan sinkronisasi primitif multi-utas yang aman, yang kondisinya perlu diinisialisasi secara statis (dengan nilai konstan). Perhatikan bahwa kompiler pra-C ++ 11 mungkin memiliki keistimewaan lain yang perlu dipenuhi.