Share via


編譯器警告 (層級 1) C4350

行為變更: 呼叫了 'member1' 而不是 'member2'

右值不能系結至非 const 參考。 在 Visual Studio 2003 之前的 Visual C++ 版本中,可以在直接初始化中將右值系結至非 const 參考。 此程式碼現在會提供警告。

為了保持回溯相容性,您仍然可以將右值系結至非 const 參考,但最好盡可能使用標準轉換。

此警告代表 Visual C++ .NET 2002 編譯器的行為變更。 如果啟用,可能會針對正確的程式碼提供此警告。 例如,使用 std::auto_ptr 類別範本時,可能會提供它。

如果您收到此警告,請檢查您的程式碼,以查看它是否相依于系結右值與非 const 參考。 將 const 新增至參考,或提供額外的 const-reference 多載可能會解決問題。

此警告預設為關閉。 如需詳細資訊,請參閱 Compiler Warnings That Are Off by Default

下列範例會產生 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
}