У меня есть абстрактный базовый класс
class Map {
public:
virtual Value get(Key const &) const;
};
класс базы данных из внешней библиотеки
class Database {
public:
// logically const and thread-safe
Value get(Key const &key);
};
, и я начал с реализации, подобной
class PersistentMap : public Map {
Database db;
public:
Value get(Key const &key) const
{ return const_cast<Database &>(db).get(key); }
};
Поскольку число const_cast
s вышло за пределы, я избавился от них, добавив спецификатор mutable
к PersistentMap::db
(и комментарий, чтобы напомнить себе о его уродстве).
- Былмоя первая попытка с
const_cast
потоко-безопасным? - Мой новый подход поточно-ориентирован, или
db
также должен быть отмечен volatile
?