【发布时间】:2016-12-08 10:41:47
【问题描述】:
我有一个抽象类及其派生类。
我想在抽象类中拥有一个成员(即 fDerivedName),并使用派生类的名称。
在我做的每个派生类的构造函数中:
fDerivedName = this->ClassName();
有没有办法避免在每个派生类中重新实现 this?
谢谢
【问题讨论】:
-
是的。 CRTP。当您可以直接调用
ClassName()时,您根本不清楚为什么需要fDerivedName,但是是的,如果您需要它,您可以拥有它。 -
你可以使用宏来简化重新实现
-
@n.m.我不确定 CRTP 如何检索派生类名称。还是你在想
typeid? -
@Quentin 我假设 ClassName() 以某种方式实现(typeid 与否)。如果不是这样,那么“如何实现 ClassName()”就是另外一个问题了。
标签: c++