c ++ variadic函数:替换的最佳方法是什么?

时间:2010-08-26 14:07:10

标签: c++ variadic-functions

在我目前的项目中,正在使用一些可变函数(省略号),这些函数实际上已被广泛使用。我必须对项目做一些有影响的改变,所以我想我也可以摆脱这些变量。

我的问题是,如果传递给它们的参数数量如此变化以至于创建重载会很愚蠢,那么最好如何替换它们?

我听说过可变参数模板,但它们是否是一个很好的替代品?

我项目中使用的大多数可变参数都是围绕sprintf或某些此类函数的包装器。

2 个答案:

答案 0 :(得分:4)

取决于可变参数的根深蒂固,您可能处于成本/收益规模的失败之中。大型项目的维护始终是在处理代码存在与您知道的更好之间的平衡行为。确保您投入的精力为结果带来实际价值。

因此需要注意。既然你提到你的函数是围绕sprintf构建的,你可以查看C ++流类。您可以将std::ostringstream视为sprintf的替代品。像that provided by Boost这样的词汇演员也可以提供帮助。

答案 1 :(得分:0)

  • 像iostreams那样使用某种操作符/函数来一次添加一个项目。
  • 接受项目向量(如果它们的类型相同)。
  • 创建一个包装所需参数信息的类,并仅传递该类的一个实例(它可以有多个属性,如果需要,每个属性可以有不同的长度)。