Я начал изучать C ++ (год назад) главным образом потому, что это универсальный язык IMO, и потому что почти все возможно.
но одна вещь не так:
например, мы пишем некоторый код внутри объекта (класса), и нам нужно как-то узнать его имя:
class Test
{
public: const char* getMyIdentiferName()
{
// what now??
}
};
Что ж, лучший вариант - использовать этот ключ, но это не поможет, потому что это не может вернуть имя?
Test thatsMyName;
const char* = thtsMyName.getMyIdentiferName(); //return string "thatsMyName" how?
как мы можем получить строку 'thatsMyName' в какой-то универсальной функции или даже шаблоне ??
ДРУГОЙ ПРИМЕР: (пожалуйста, ответьте также)
как мы можем получить typeid некоторого класса?
class MyType
{
public: type_info getType()
{
return typeid(this); //that wont work of course :)
{
};
это выглядит забавно, но если у кого-то из вас есть идея, как выполнить подобное задание ...
Большое спасибо.
РЕДАКТИРОВАТЬ: ОК, все говорят, что невозможно получить имя объекта, я узнал, как получить имя:
class Test
{
public: string getObjectName()
{
string arg = typeid(*this).name();
arg.erase(arg.begin(), arg.begin() + 5);
arg.erase(0,1);
return arg;
}
};
int main()
{
Test thisIsMyName;
cout << thisIsMyName.getObjectName() << endl;
cin.ignore();
return 0;
}
EDIT:
Большое спасибо Fiktik, который ответил на мой второй пример, который нашел способ получить type_info объекта!