我有一个模板化的类,我需要根据命令行参数进行实例化。
必须有比我能想到的更好的方式:
if (optionA == 1){
if (optionB == 2){
myclass <Option1, Option2, Option3> object;
}
}
else if (optionA == 2){
// a whole big if-else ladder
}
这甚至不允许我在if语句的范围之外使用我的模板化对象!顺便说一句,所有选项都是标签
答案 0 :(得分:1)
您的挑战是您希望编译时决策(选项类型选择)基于运行时数据(args)。我可以想象一个生成“解析树”的宏/模板解决方案,将选项代码映射到标签。但这会导致产生模板化类型的组合爆炸,这会减慢编译速度(可能还会延迟编译)。另一种方法是为每个选项使用工厂方法,将选项对象传递给myclass构造函数。不如纯编译时生成那么高效,但我没有看到替代方案。