У меня есть класс Foo
с правами на чтение экземпляра класса Bar
, но у него нет прав на его изменение.В то же время, экземпляр Bar
может быть изменен другими элементами.
На данный момент я реализую его следующим образом:
class Foo
{
private:
const Bar& bar; // Foo can't modify it
public:
Foo(const Bar& bar_) : bar(bar_) {}
void doSomthing() { this->bar.printData(); }
};
И его можно использовать какэто:
Bar bar;
Foo foo(bar);
bar.update(); // This modify the instance of Bar
foo.doSomthing(); // This use the reference to (modified) bar
Мой вопрос: С этой реализацией могу ли я быть уверен, что компилятор не использует не обновленную копию bar
, даже если ссылка объявлена как const
?
Если нет, как я могу это сделать?
Примечание: я не использую C ++ 11 для совместимости