C ++ эквивалент Java’s this.getClass (). GetSimpleName ();

В Java, если я хочу использовать имя класса объекта, я могу написать:

String myString = this.getClass().getSimpleName();

Что такое эквивалент в C ++? То есть как я могу получить строку с именем класса *this?

1

Решение

В стандарте C ++ нет эквивалента. Ближайшее, что вы получите typeid(*this).name(), но нет гарантии, как будет выглядеть «имя» — результат определяется реализацией. В основном это будет то, что ваш компилятор решил поместить туда, что может соответствовать или не соответствовать имени класса в исходном коде. Увидеть cppreference.com для дополнительной информации.

Если вы хотите узнать имя класса, код которого вы можете изменить, вы можете написать функцию, которая возвращает читаемое имя. Но в остальном вы в основном застряли на том, что вернет приведенный выше код.

4

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

Где А класс

typeid(A).name()
1

Мы можем создать нашу собственную функцию для этого,

class ClassName
{
static std::string const className()
{
return "ClassName";
}
};
std::string const name = ClassName::className();

QObject->metaObject() метод действителен для Qt кроме QGraphicsItem основанные классы, которые не наследуются от QObject,

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