首頁 > 後端開發 > C++ > 為什麼我在 Visual Studio 2015 中收到編譯器錯誤 C2280「嘗試引用已刪除的函數」?

為什麼我在 Visual Studio 2015 中收到編譯器錯誤 C2280「嘗試引用已刪除的函數」?

DDD
發布: 2024-10-26 17:03:02
原創
975 人瀏覽過

Why Am I Getting Compiler Error C2280

Visual Studio 2015 中的編譯器錯誤C2280「嘗試引用已刪除的函數」

Visual Studio 2015 編譯器與其2013 年的編譯器前身不同,自動為定義移動建構子或移動賦值運算子的類別產生刪除的複製建構子。 C 標準強制執行此行為,以防止在首選移動的情況下發生意外複製。

在您的程式碼片段中,類別 A 有一個移動建構函式 A(A &&),這又表示刪除的副本建構函式按照標準。因此,main 中的新 A(a) 表達式會觸發錯誤 C2280。

要解決此問題,您可以在 A:

中明確聲明複製建構子。或者,如果您真的想要停用複製而只允許移動,您可以將複製建構函式和複製賦值運算子宣告為已刪除:

記住,如果您選擇停用複製,您還需要聲明移動賦值運算子和析構函數遵守五法則。

以上是為什麼我在 Visual Studio 2015 中收到編譯器錯誤 C2280「嘗試引用已刪除的函數」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板