編譯器警告 (層級 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
}
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應