c ++中的模板方法模式和长参数列表

时间:2010-09-09 12:48:19

标签: c++ templates template-method-pattern

在我last question的有用答案之后,我开始将模板方法模式用于具有许多不同选项的类。如果没有全部实现它们,那么我对该类对象的当前声明现在看起来像这样:

pc < prg, tc, 9, 0, 4, 4, test, true, true, true, true, false, true, true, 10, 0, -1, 3, 3 > mp;

如何处理长模板参数列表?我应该使用枚举/定义而不是真/假和数字吗?是否有常用的替代品?

4 个答案:

答案 0 :(得分:5)

如果我有一个很长的模板参数列表,我宁愿重新考虑我的设计。许多参数通常表明设计不良。

答案 1 :(得分:4)

是的,使用枚举(不是定义)而不是真/假。这样,如果你得到的参数不按顺序,那么编译器会抱怨。此外,它对读者来说更加清晰。

至于处理一般的长参数列表 - 将它们隐藏在typedef或修复某些模板参数的生成器后面,并让你改变其他参数。

答案 2 :(得分:2)

我不做c ++,这可能不适用于模板,但我会尝试使用长参数列表的常规方法找到相关参数并尝试合理地对它们进行分组并引入参数对象分组,以便您有一个更复杂的参数列表。

答案 3 :(得分:1)

我宁愿传递一个变量类型的集合,例如std :: vector。