【问题标题】:c++ variadic function: What is the best way to replace?c++ 可变参数函数:最好的替换方法是什么?
【发布时间】:2010-08-26 14:07:10
【问题描述】:

在我当前的项目中,使用了一些可变参数函数(省略号),这些函数确实经常被使用。我必须对项目进行一些有影响力的更改,所以我想我也不妨摆脱这些可变参数。

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

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

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

【问题讨论】:

  • 有什么特别的原因吗?可变参数函数是有目的的......(知道你不喜欢它们的什么有助于形成替换它们的方法)

标签: c++ variadic-functions


【解决方案1】:

根据可变参数的根深蒂固,您可能处于成本/收益规模的失败端。大型项目的维护始终是在使用现有代码与您所知道的更好之间的平衡行为。确保您付出的努力在结果中具有真正的价值。

因此,请注意。由于您提到您的函数是围绕 sprintf 构建的,因此您可能会查看 C++ 流类。您可以考虑将std::ostringstream 作为 sprintf 的替代品。像that provided by Boost 这样的词汇转换也可能会有所帮助。

【讨论】:

    【解决方案2】:
    • 采用类似 iostream 的方法,使用某种运算符/函数一次添加一个项目。
    • 接受项目向量(如果它们只是相同的类型)。
    • 创建一个包含所需参数信息的类,并仅传递该类的一个实例(它可以有多个属性,如果需要,每个属性都可以具有不同的长度)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-20
      • 2018-10-05
      • 2011-01-12
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      相关资源
      最近更新 更多