Я знаю, что на C++ нет отражения, как в Java, C# и AS3. Но мне действительно нужно знать, какой тип члена имеет класс. (Я полагаю, что пользователь создает класс таким образом, который я могу ему предоставить, а затем я должен иметь возможность перечислять все типы участников.) Как я могу это сделать?C++ как узнать, какой тип элемента имеет класс в C++
Конечно, я могу добавить фазу предварительной обработки на естественную предварительную обработку, чтобы выполнить это, но я хочу другое решение. Более элегантный и не хаки.
Пример:
Пользователь создает класс, как это: (способ создания класса мы можем по-другому, например, я могу требовать наследство от какого-либо класса или с помощью макроса ...)
class A
{
int a;
double b;
};
И теперь я могу получить список всех членов класса A
{"int", "double"} как список строк. как это, например:
GetTypes::listOfMemberTypes(A) or GetTypes<A>::listOfMemberTypes
списка.Возвраты, который содержит «Int», «двойной»
Можете ли вы привести пример того, что вы хотите сделать? –
Итак, ваш вопрос: «Я знаю, что это невозможно в рамках языка, и я знаю, что могу сделать это за пределами языка, но как я могу это сделать в пределах языка? Действительно? Программирование не работает на основе« довольно пожалуйста, «C++ не будет спонтанно выражать функцию отражения только потому, что вам« действительно нужно ». – jalf
jalt такие лозунги просто популярны и ничего больше. Есть ли способ определить, является ли это объектом или перечислением? is, и это не язык, встроенный, см. boost :: is_enum – Narek