考慮以下代碼值鍵入運行映射
enum Types
{
t1,
t2
};
struct Base
{
Types typeTag;
Base(Types t) : typeTag(t){}
};
template<typename T>
struct Derived : Base
{
using Base::Base;
T makeT() { return T(); }
};
int main()
{
Base *b = new Derived<std::string>(t1);
auto d = getDerivedByTag(b); // How ??
d->makeT();
return 0;
}
是否有可能通過基地:: typeTag值在運行時恢復派生類型參數?顯然,需要一些外部初步準備的映射,但我無法弄清楚確切的方法。