Получение имени и типа поля структуры из его объекта - PullRequest
1 голос
/ 25 марта 2010

Например, у меня есть структура, которая выглядит примерно так:

struct Test
{
    int i;
    float f;
    char ch[10];
};

И у меня есть объект этой структуры, такой как:

Test obj;

Теперь я хочу программно получить имена полей и тип obj. Возможно ли это?

Это C ++ BTW.

Ответы [ 4 ]

9 голосов
/ 25 марта 2010

Вы запрашиваете Отражение в C ++ .

4 голосов
/ 25 марта 2010

Боюсь, вы не можете получить имена полей, но вы можете получить тип obj, используя Boost.Typeof :

#include <boost/typeof/typeof.hpp>
typedef BOOST_TYPEOF(obj) ObjType;
1 голос
/ 25 марта 2010

Нет, это невозможно без написания собственной системы "struct". Вы можете получить размер члена, но вам нужно знать его имя. C ++ не позволяет вам, насколько мне известно, перечислять во время компиляции или выполнения члены данного объекта. Вы можете поместить несколько функций, таких как «GetNumMembers ()» и «GetMemberSize (index)» и т. Д., Чтобы получить информацию, которую вы ищете ...

0 голосов
/ 25 марта 2010

Вы также можете поискать в Интернете «сериализацию C ++», особенно библиотеки Boost. Я также искал бы переполнение стека для "C ++ сериализации".

Многие новички в C ++ хотели бы создавать экземпляры объектов из имени класса или заполнять поля класса на основе имен. Здесь пригодятся сериализация или десериализация.

Мой опыт работы с именами классов и членов основан на печати отладочной информации. Имена классов и полей будут полезны при обработке исключений, особенно при их создании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...