Bagikan melalui


Compiler Warning (level 1) C4350

perubahan perilaku: 'member1' dipanggil alih-alih 'member2'

Rvalue tidak dapat diikat ke referensi non-const. Dalam versi Visual C++ sebelum Visual Studio 2003, dimungkinkan untuk mengikat rvalue ke referensi non-const dalam inisialisasi langsung. Kode ini sekarang memberikan peringatan.

Untuk kompatibilitas mundur, masih mungkin untuk mengikat rvalue ke referensi non-const, tetapi konversi standar lebih disukai sedapat mungkin.

Peringatan ini mewakili perubahan perilaku dari pengkompilasi Visual C++ .NET 2002. Jika diaktifkan, peringatan ini mungkin dapat diberikan untuk kode yang benar. Misalnya, ini dapat diberikan saat menggunakan templat kelas std::auto_ptr .

Jika Anda mendapatkan peringatan ini, periksa kode Anda untuk melihat apakah itu tergantung pada rvalue pengikatan ke referensi non-const. Menambahkan const ke referensi atau memberikan kelebihan referensi konstan tambahan dapat menyelesaikan masalah.

Peringatan ini nonaktif secara default. Untuk informasi selengkapnya, lihat Peringatan Pengkompilasi yang Nonaktif secara Default.

Sampel berikut menghasilkan C4350:

// C4350.cpp
// compile with: /W1
#pragma warning (default : 4350)
class A {};

class B
{
public:
   B(B&){}
   // try the following instead:
   // B(const B&){}

   B(A){}
   operator A(){ return A();}
};

B source() { return A(); }

int main()
{
   B ap(source());   // C4350
}