Rumah > Artikel > pembangunan bahagian belakang > Mengapa Melepasi Objek Kelas dengan Rujukan kepada std::thread Masih Mencetuskan Pembina Salin?
std::thread Melepasi Rujukan Menjemput Pembina Salin
Isu:
Apabila lulus objek kelas Log ke std::thread dengan rujukan, ralat pengkompil berlaku, walaupun jangkaan bahawa lulus rujukan harus memintas pembina salinan. Sebaliknya, menghantar objek melalui penuding menyelesaikan isu.
Penjelasan:
Sebab asas untuk tingkah laku ini ialah std::thread memerlukan hujahnya diluluskan oleh nilai. Melewati rujukan, seperti dalam Log &logger, mempunyai kesan yang sama seperti menghantar penunjuk, iaitu, ia masih memerlukan pembina salinan untuk menjana salinan objek untuk dihantar ke utas.
Penyelesaian:
Untuk mendapatkan semula semantik rujukan, sử dụng std::reference_wrapper:
std::thread newThread(session, &sock, std::ref(logger));
Nota:
Atas ialah kandungan terperinci Mengapa Melepasi Objek Kelas dengan Rujukan kepada std::thread Masih Mencetuskan Pembina Salin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!