std :: atomic错误:没有为后缀'++'声明'operator ++(int)'[

我试图通过不同的线程更新一个atomic变量,并得到这个错误。 这是我的代码。

class counter {
    public:
    std::atomic<int> done;

    bool fn_write (int size) const {
        static int count = 0;
        if (count == size) {
            done++;
            count = 0;
            return false;
        } else {
            count++;
            return true;
        }
    }
};

int main() {
    counter c1;
    for (int i=0; i<50; i++) {
        while (! c1.fn_write(10)) ;
    }
}

我在第8行done++得到以下错误。

错误:没有为后缀'++'声明'operator ++(int)'[-fpermissive]


fn_write()被声明为一个const成员函数,其中done数据成员不能被修改。

根据你的意图,你可以使fn_write()成为非常量:

bool fn_write (int size) {
    ... ...
}

或者,你可以done mutable

mutable std::atomic<int> done;

bool fn_write (int size) const {
    ... ...
}
链接地址: http://www.djcxy.com/p/73071.html

上一篇: std::atomic error: no ‘operator++(int)’ declared for postfix ‘++’ [

下一篇: operator<< overloading "error: passing 'const...."