Вы можете сделать вектор mutable
, чтобы его можно было изменить из методов const, например:
mutable std::vector<int> m_vector;
Обратите внимание, что это делает вектор изменяемым из all методы.Если вы хотите записать в него только один метод, const_cast
менее инвазивен, поскольку вы отбрасываете константу this
только для одного вызова:
FooMock * const that = const_cast<FooMock * const>(this);
that->m_vector.push_back(id);
I'mбудучи немного педантичным здесь - внутри метода const, this
имеет тип T const * const
(поэтому и объект, на который указывает указатель, и сам указатель являются константой).const_cast
просто отбрасывает константу объекта, но не указателя.