是否有可能获得对象名称?
#include<cstdio>
class one {
public:
int no_of_students;
one() { no_of_students = 0; }
void new_admission() { no_of_students++; }
};
int main() {
one A;
for(int i = 0; i < 99; i++) {
A.new_admission();
}
cout<<"class"<<[classname]<<" "<<[objectname]<<"has "
<<A.no_of_students<<" students";
}
Run Code Online (Sandbox Code Playgroud)
在哪里我可以取名字,像
[classname] = A.classname() = one
[objectname] = A.objectname() = A
Run Code Online (Sandbox Code Playgroud)
C++是否提供了实现此目的的任何机制?
这只需要用g ++工作.
我想要一个功能
template<typename T> std::string magic();
Run Code Online (Sandbox Code Playgroud)
这样:
Class Foo{}; magic<Foo>(); // returns "Foo";
Class Bar{}; magic<Bar>(); // returns "Bar";
Run Code Online (Sandbox Code Playgroud)
我不希望这是通过专业化来完成的(即必须为每种类型定义魔法.我希望在这里拉出一些宏/模板黑魔法.任何人都知道怎么做?)
谢谢!
在Java中,如果要使用对象类的名称,可以编写:
String myString = this.getClass().getSimpleName();
Run Code Online (Sandbox Code Playgroud)
C ++的等效功能是什么?也就是说,如何获取具有类名称的字符串*this?