0

我有一个模板类,我需要根据命令行参数对其进行实例化。

一定有比我能想到的更好的方法:

if (optionA == 1){
    if (optionB == 2){
        myclass <Option1, Option2, Option3> object;
    }
}
else if (optionA == 2){
 // a whole big if-else ladder
}

这甚至不允许我在 if 语句的范围之外使用我的模板化对象!顺便说一句,所有选项都是标签

4

1 回答 1

1

您的挑战是您希望编译时决策(选项类型选择)基于运行时数据(args)。我可以想象一个生成“解析树”的宏/模板解决方案,将选项代码映射到标签。但这会导致生成模板类型的组合爆炸,这会减慢编译(可能还有运行时)。另一种方法是对每个选项使用工厂方法,将选项对象传递给 myclass 构造函数。不如纯编译时生成高效,但我没有看到替代方案。

于 2013-05-09T18:47:43.717 回答