在Java中,如果我想使用对象类的名称,我可以写:
String myString = this.getClass().getSimpleName();
C ++与此相当的是什么?也就是说,如何获得具有*this
类的名称的字符串?
答案 0 :(得分:5)
标准C ++中没有等价物。你得到的最接近的是typeid(*this).name()
,但不能保证“名称”的样子 - 结果是实现定义的。它基本上就是你的编译器决定放在那里的东西,它可能与源代码中的类名相对应,也可能不对应。有关详细信息,请参阅cppreference.com。
如果您想知道可以更改其代码的类的名称,您可以编写一个返回可读名称的函数。但除此之外,你基本上都会遇到上述代码返回的内容。
答案 1 :(得分:1)
其中A是班级
typeid(A).name()
答案 2 :(得分:0)
我们可以创建我们自己的功能,
class ClassName
{
static std::string const className()
{
return "ClassName";
}
};
std::string const name = ClassName::className();
QObject->metaObject()
方法仅适用于Qt
,但基于QGraphicsItem
的类不会从QObject
继承。