我想对标记为const的对象执行只读方法,但为了安全地执行此操作,我需要锁定一个reader-writer互斥锁:
const Value Object::list() const { ScopedRead lock(children_); ... }
但这打破了因为编译器抱怨“children_”是const等等.我去了ScopedRead类,直到RWMutex类(children_是一个子类),允许在const对象上使用read_lock,但我必须写这个:
inline void read_lock() const { pthread_rwlock_rdlock(const_cast<pthread_rwlock_t*>(&rwlock_)); }
我一直都知道const_cast是代码味道.有什么办法可以避免这个吗