Share via


Upozornění kompilátoru (úroveň 1) C4350

změna chování: byl zavolán člen 'member1' místo členu 'member2'

Hodnota rvalue nemůže být vázána na nekonstanční odkaz. Ve verzích Visual C++ před sadou Visual Studio 2003 bylo možné svázat rvalue s odkazem bez const v přímé inicializaci. Tento kód teď zobrazí upozornění.

Kvůli zpětné kompatibilitě je stále možné svázat hodnoty rvalue s odkazy bez const, ale standardní převody jsou upřednostňované všude, kde je to možné.

Toto upozornění představuje změnu chování kompilátoru Visual C++ .NET 2002. Pokud je toto upozornění povolené, může být toto upozornění pravděpodobně zadáno pro správný kód. Může se například dát při použití šablony třídy std::auto_ptr .

Pokud se zobrazí toto upozornění, zkontrolujte kód a zjistěte, jestli závisí na vazbách rvalue s odkazy, které nejsou const. Přidáním const do odkazu nebo poskytnutím dalšího přetížení const-reference může problém vyřešit.

Toto upozornění je ve výchozím nastavení vypnuté. Další informace najdete v tématu Upozornění kompilátoru, která jsou ve výchozím nastavení vypnutá.

Následující ukázka vygeneruje 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
}