Я хочу программно получить идентификатор экземпляра класса C ++ во время выполнения. Я знаю, что C ++ еще не поддерживает рефлексию, но есть ли альтернативное решение?
Например, учитывая следующий пример:
class Foo {
Foo() {
auto name = reflect::getIdentifierName(this);
std::cout << name << std::endl;
}
};
void main() {
Foo my_obj;
}
Выполнение этой программы должно распечатать «my_obj».
Я ищу любую вспомогательную библиотеку, которую я мог бы использовать для реализации этой базовой функции отражения.
Мне особенно интересно, можно ли использовать libclang для извлечения такой информации — если да, то какой-нибудь намек на то, как построить функцию отражения для этого.
Да, но это определяется реализацией. Действуйте на свой страх и риск.
Предложение Юнноша звучит гораздо более разумно без большего контекста.
#include <iostream>
#include <typeinfo>
class Foo {
public:
Foo() {
const char * const name = typeid(this).name();
std::cout << name << std::endl;
}
};
int main()
{
Foo my_obj;
}
Других решений пока нет …