簡體   English   中英

錯誤:使用已刪除的函數 &#39;std::atomic<bool> ::atomic(const std::atomic<bool> &amp;)&#39;?

[英]Error: use of deleted function ‘std::atomic<bool>::atomic(const std::atomic<bool>&)’?

這是我的班級結構/設置

class A {
   public:
   std::atomic_bool isStarted();
   ...
   private:
   std::atomic_bool started;
}

std::atomic_bool A::isStarted() {
    return started;
}

這一切都編譯得很好,但是當我有一個 A 的實例時

並嘗試調用 a.isStarted(),我收到此錯誤

error: use of deleted function ‘std::atomic<bool>::atomic(const std::atomic<bool>&)’
 return started;
        ^~~~~~~

我應該如何重構 isStarted 函數以不調用這個已刪除的函數? 我不明白為什么當我只是返回布爾字段時會調用復制構造函數。

當前版本按值返回atomic_bool ,這將使用刪除的復制構造函數,您可以更改函數以返回對類成員的引用,例如std::atomic_bool& A::isStarted()

來自https://en.cppreference.com/w/cpp/atomic/atomic

std::atomic 既不可復制也不可移動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM