如何从基类中打印出派生类名称,而无需一直链接构造函数。换句话说,是否可以从基类严格执行此操作,而无需在每个派生类中添加代码?
这是我得到的一个例子,如果有一种方法我想摆脱构造函数链接。
编辑: 理想情况下,我正在寻找一些东西来添加到基类中,而不必编辑所有派生类。目前我的真实代码有大约 17 个类(需要更多类),所以可以直接从基类完成工作的东西是理想的。即使它是特定于编译器的(g++ 或 clang)。
#include <iostream>
class Base {
public:
Base(std::string id) {
std::cout<<"Creating "<<id<<std::endl;
}
};
class Child : Base {
public:
Child(std::string id) : Base(id) {}
Child() : Base(typeid(this).name()) {}
};
class GrandChild : Child {
public:
GrandChild(std::string id) : Child(id) {}
GrandChild() : Child(typeid(this).name()) {}
};
class GrandGrandChild : GrandChild {
public:
GrandGrandChild(std::string id) : GrandChild(id) {}
GrandGrandChild() : GrandChild(typeid(this).name()) {}
};
int main() {
GrandGrandChild *A = new GrandGrandChild();
GrandChild *B = new GrandChild();
Child *C = new Child();
return 0;
}
哪个打印:
Creating GrandGrandChild
Creating GrandChild
Creating Child
但是编译后添加了前缀。