Логирование обращений к объекту

Известно, что прямое обращение к параметру это плохо(геттеры и сеттеры рулят), запись из нескольких мест непосредственно в переменную еще хуже. Но разбирая очередную багу, столкнулся именно с такой ситуацией - имеется контейнер std::map, в который в нескольких(порядка десяти) мест элементы вставляются, и иногда вызывается std::move(точное количество вызовов сказать сложно). И как апофеоз - данный контейнер передается по указателю, и с указателем происходит примерно такая же работа. Интересующий меня элемент вставляется, но в какой-то момент времени исчезает. Можно ли как-то отлоггировать обращения к данной мапе, не переписывая весь код? В своих попытках пытался создать отнаследованный от std::map класс, в котором будет вызываться логирование, а после вызов родительского метода. (Не смог одолеть шаблоны, отложил.) Помню, что адрес любой функции - это местоположение в памяти. И создаваемые объекты имеют адреса.

Итак, ВОПРОС: Можно ли написать (а может, уже где-то есть готовая, только о ней не знаю) универсальную обертку, которая будет брать объект(например, создаваемый класс), и при обращении к нему/к его функции с параметрами, будет логировать обращение и вызывать у вложенного в нее объекта соответствующий метод?

такой своеобразный "человек посередине". Цель - отследить работу конкретного объекта, не переписывая код во всех местах обращения к нему


Ответы (0 шт):