Share via


Derleyici Uyarısı (düzey 1) C4350

behavior change: 'member2' yerine 'member1' çağrıldı

Rvalue, sabit olmayan bir başvuruya bağlanamaz. Visual Studio 2003'den önceki Visual C++ sürümlerinde, doğrudan başlatmada bir rvalue'yu sabit olmayan bir başvuruya bağlamak mümkündü. Bu kod artık bir uyarı verir.

Geriye dönük uyumluluk için, rvalue'ları const olmayan başvurulara bağlamak mümkündür, ancak standart dönüştürmeler mümkün olan her yerde tercih edilir.

Bu uyarı, Visual C++ .NET 2002 derleyicisinin davranış değişikliğini temsil eder. Etkinleştirilirse, doğru kod için bu uyarı verilebilir. Örneğin, std::auto_ptr sınıf şablonu kullanılırken verilebilir.

Bu uyarıyı alırsanız kodunuzu inceleyerek rvalue'ları const olmayan başvurulara bağlamaya bağlı olup olmadığını görün. Başvuruya const eklemek veya ek bir const-reference aşırı yüklemesi sağlamak sorunu çözebilir.

Bu uyarı varsayılan olarak kapalıdır. Daha fazla bilgi için bkz . Varsayılan Olarak Kapalı Olan Derleyici Uyarıları.

Aşağıdaki örnek C4350 oluşturur:

// 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
}