我需要在运行时确定具体类型。种类有固定数量,但也有很多。准确的说是256。我做了一个创客。但看起来令人毛骨悚然。
static TBase* NewObj(unsigned char num)
{
switch (num)
{
case 0: return new TDerived<0>;
case 1: return new TDerived<1>;
case 2: return new TDerived<2>;
case 3: return new TDerived<3>;
case 4: return new TDerived<4>;
case 5: return new TDerived<5>;
case 6: return new TDerived<6>;
case 7: return new TDerived<7>;
case 8: return new TDerived<8>;
case 9: return new TDerived<9>;
case 10: return new TDerived<10>;
case 11: return new TDerived<11>;
case 12: return new TDerived<12>;
case 13: return new TDerived<13>;
case 14: return new TDerived<14>;
case 15: return new TDerived<15>;
// ...
// ...
default: return nullptr;
}
}
没有256个案例能做到这一点吗?或者这是正常的?还是我又犯傻了?