【问题标题】:Can a variable function arguments list be passed by reference?变量函数参数列表可以通过引用传递吗?
【发布时间】:2014-09-03 16:21:48
【问题描述】:

我们可以使用 stdarg 库中的 ... 符号创建具有可变数量参数的函数。是否也可以通过引用传递这些参数?例如。可能会返回可变数量的输出值。

【问题讨论】:

    标签: c++ parameter-passing pass-by-reference


    【解决方案1】:

    对于<stdarg.h> 意义上的可变参数函数,并非如此(template varargs 除外)。你不能打电话

    void foo(int, ...);
    

    作为

    int x = 0, y = 1;
    foo(2,x,y);
    

    并期望 xy 通过引用传递。但是,您可以传递他们的地址:

    foo(2, &x, &y);
    

    您可能还可以使用可变参数模板技巧或预处理器宏技巧将FOO(x,y) 转换为foo(2,&x,&y)

    【讨论】:

    • 想想,应该是我自己想出来的诀窍!谢谢。
    【解决方案2】:

    stdarg.h 不能,但如果你使用 c++ 功能,则可以。

    我建议研究 std::tie 的实现作为标准库如何做到这一点的示例。

    【讨论】:

    • 但这是一个模板可变参数。 OP询问<stdarg.h>
    • 啊,我没有注意到对 stdarg.h 的引用。我怀疑该标头中是否有任何机制可以做到这一点,看看该标头如何是一个 c 标头(它不知道存在引用)。
    猜你喜欢
    • 2020-02-25
    • 2011-03-11
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多