Как я могу добавить отражение в приложение C ++? - PullRequest
228 голосов
/ 03 сентября 2008

Я хотел бы иметь возможность проанализировать класс C ++ на предмет его имени, содержимого (то есть членов и их типов) и т. Д. Я говорю здесь на родном C ++, а не на управляемом C ++, который имеет отражение. Я понимаю, что C ++ предоставляет некоторую ограниченную информацию, используя RTTI. Какие дополнительные библиотеки (или другие методы) могут предоставить эту информацию?

Ответы [ 32 ]

0 голосов
/ 03 сентября 2008

Простым способом является использование оператора dynamic_cast<>(), который при присвоении неправильного типа возвращает NULL, так что вы можете легко перейти на базовый конкретный класс, проверяя значение указателя, если оно не NULL, приведение было выполнено, и вы получили тип объекта.

Но это просто простое решение, и оно предоставляет только тип объектов, вы не можете спросить, какие у него методы, как в Java. Если вам нужно продвинутое решение, есть несколько платформ на выбор.

0 голосов
/ 15 января 2010

отсутствие встроенного отражения в C ++ - единственная причина, по которой современный C ++ не используется для веб-разработки (и не хватает ORM и других фреймворков)

Вы можете попробовать http://www.extreme.indiana.edu/reflcpp/

...