我试图通过不同的线程更新
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 {
... ...
}
我刚刚使用 gcc 遇到了这个错误,就我而言,这是因为我忘记了:
#include <atomic>