Отражение - это, по сути, то, что компилятор решил оставить в виде следов в коде, который может запросить код времени выполнения. C ++ славится тем, что не платит за то, что вы не используете; Поскольку большинство людей не используют / не хотят отражать, компилятор C ++ избегает затрат, не записывая что-либо .
Таким образом, C ++ не обеспечивает рефлексию, и не так просто «имитировать» его как общее правило, как отмечали другие ответы.
В разделе "другие методы", если у вас нет языка с отражением, получите инструмент, который может извлекать необходимую информацию во время компиляции.
Наш инструментарий реинжиниринга программного обеспечения DMS - это обобщенная технология компиляции, параметризованная явными определениями языка. Он имеет языковые определения для C, C ++, Java, COBOL, PHP, ...
Для версий C, C ++, Java и COBOL он обеспечивает полный доступ к деревьям разбора и информации таблицы символов. Эта информация таблицы символов включает в себя данные, которые вы, вероятно, захотите получить от «отражения». Если ваша цель состоит в том, чтобы перечислить некоторый набор полей или методов и сделать что-то с ними, DMS можно использовать для преобразования кода в соответствии с тем, что вы найдете в таблицах символов произвольным образом.