共用方式為


編譯器警告 (層級 1) C4350

更新:2007 年 11 月

錯誤訊息

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

值無法繫結至非常數參考。在舊版 Visual C++ 中,可以在直接初始化中,將變數繫結至非常數參考。這程式碼現在會發出警告。

為達到回溯相容性 (Backward Compatibility),仍然可以將右值繫結至非常數參考,但盡可能取標準轉換。

這項警告表示從 Visual C++ .NET 2002 編譯器以來的行為變更。如果啟用,可能會對正確程式碼發出這項警告。例如,使用 std::auto_ptr 類別樣板時,可能就會發出這項警告。

如果接到這項警告,請檢查您的程式碼,查看是否依繫結右值至非常數參考而產生。加入 const 至參考,或另外提供常數參考多載,也許就能解決問題。

此警告在預設情況下為關閉的。如需詳細資訊,請參閱預設為關閉的編譯器警告

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