Megosztás a következőn keresztül:


Fordító figyelmeztetés (1. szint) C4350

viselkedésváltozás: 'member1' hívva a 'member2' helyett

Megjegyzések

A rvalue nem köthető össze nem konstans hivatkozással. A Visual C++ Visual Studio 2003 előtti verzióiban lehetséges volt, hogy egy rvalue-t közvetlen inicializálásban nem const hivatkozáshoz kössünk. Ez a kód most figyelmeztetést ad.

A visszamenőleges kompatibilitás érdekében továbbra is lehet értékeket kötni a nem konstans hivatkozásokhoz, de ahol csak lehetséges, a standard konverziókat részesítik előnyben.

Ez a figyelmeztetés a Visual C++ .NET 2002 fordító viselkedésének változását jelzi. Ha engedélyezve van, ez a figyelmeztetés a megfelelő kódra is megadható. Például az std::auto_ptr osztálysablon használatakor adható meg.

Ha ez a figyelmeztetés jelenik meg, vizsgálja meg a kódot, és ellenőrizze, hogy az függ-e a nem konstans hivatkozásokhoz való kötési rvaluáktól. Ha egy constot ad hozzá a hivatkozáshoz, vagy további const-reference túlterhelést biztosít, megoldhatja a problémát.

Ez a figyelmeztetés alapértelmezés szerint ki van kapcsolva. További információ: A fordító alapértelmezés szerint ki van kapcsolva.

Example

Az alábbi példa c4350-et hoz létre:

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