Можем ли мы получить имя объекта, используя указатель «this»

Я хочу программно получить идентификатор экземпляра класса C ++ во время выполнения. Я знаю, что C ++ еще не поддерживает рефлексию, но есть ли альтернативное решение?
Например, учитывая следующий пример:

class Foo {
Foo() {
auto name = reflect::getIdentifierName(this);
std::cout << name << std::endl;
}
};

void main() {
Foo my_obj;
}

Выполнение этой программы должно распечатать «my_obj».
Я ищу любую вспомогательную библиотеку, которую я мог бы использовать для реализации этой базовой функции отражения.

Мне особенно интересно, можно ли использовать libclang для извлечения такой информации — если да, то какой-нибудь намек на то, как построить функцию отражения для этого.

-1

Решение

Да, но это определяется реализацией. Действуйте на свой страх и риск.

Предложение Юнноша звучит гораздо более разумно без большего контекста.

#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;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]