У меня есть функция (используется для записи логов), которая вызывается в разных классах. Не хочется каждый раз переписывать код в ней для каждого нового класса(они будут и добавляться и убираться со временем, ну или вообще функция будет использоваться в дальнейшем в других проектах).
Мне хотелось бы узнавать имя класса, из которого она вызывается (для задания имени файлу и прочих плюшек) не передавая лишних параметров в функцию.
Это можно реализовать? Можно и boost`ом.
Ответ
Функция typeid(object) возвращает объект типа type_info с информацией о типе объекта, для которого она вызывается (собственно, о классе). У этого объекта(type_info) есть метод name(), который и возвращает имя класса.
Для использования нужно подключить
Так что в итоге для получения имени класса нужно использовать
typeid(*this).name()
Или, если функция не является методом класса, передать в typeid сам объект или разыменованный указатель.
Комментариев нет:
Отправить комментарий