編譯器警告 (層級 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
}