【发布时间】:2018-06-16 10:05:44
【问题描述】:
在一个子类中,我有一个私有 std::mutex m 字段,我在基类纯虚方法的实现中使用它以线程安全的方式返回一个值(该值可以由另一个线程更新):
int SubClass::get() const // implements 'virtual int get() = 0 const' of the base class
{
std::lock_guard<std::mutex> lck(m);
return value;
}
编译器告诉我这违反了 const 的正确性并产生错误:
错误:将 'const std::mutex' 绑定到类型的引用 'std::lock_guard::mutex_type& {aka std::mutex&}' 丢弃 限定词
有没有办法使其符合并以 const 正确的方式使用 std::lock_guard?只需将其更改为 const std::lock_guard 不会改变任何内容。我真的不明白哪个部分有问题,那么我对 C++ 还是很陌生...
【问题讨论】:
-
m是SubClass的成员吗? -
这个问题被标记为重复,但事实并非如此。要解决所谓的重复问题,答案(使用 mutable 关键字)应该是已知的......
标签: c++ multithreading constants