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

I am trying to update an atomic variable through different threads and getting this error. This is my code.

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)) ;
    }
}

I am getting the following error in line 8 done++ .

error: no 'operator++(int)' declared for postfix '++' [-fpermissive]


fn_write() is declared as a const member function, inside which the done data member can't be modified.

Depending on your intent, you can make fn_write() be non-const:

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

Or, you can make done be mutable :

mutable std::atomic<int> done;

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

上一篇: 命名空间中的ostream运算符<<隐藏了其他ostream ::运算符

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