当前位置:  开发笔记 > 编程语言 > 正文

用C++包装变量参数函数

如何解决《用C++包装变量参数函数》经验,为你挑选了1个好方法。

我想用另一个函数(也采用可变数量的参数)包装xmlrpc"call"函数(它接受可变数量的参数).我想简单地将传递给我的包装函数的可变数量的参数转发到xmlrpc"call"函数.我知道如何使用va_start和va_arg,但我真的不关心传入的值,我只是想将它们转发到包装函数.这可能吗?

我要包装的函数的规范是

call(const char* url, const char* function, const char* paramSpec, void* result, ...);

我的包装器处理前三个参数和引用结果,它只需要将其额外的参数转发给调用函数



1> CB Bailey..:

不幸的是,没有办法提供一个函数的完美转发,该函数通过...语法获取可变数量的参数.这就是为什么最好的做法是在函数方面实现所有公共变量参数列表函数,va_list并为任何客户端代码提供两个接口.这就是为什么有printfvprintf,sprintfvsprintf标准库等.

如果没有vcall或类似的采取一个va_list那么没有简单的方法来做你想要的.唯一的可能是解释其他参数,以根据提供的固定参数计算传递给函数的变量参数列表中必须包含的内容,将变量参数列表中的所有参数拉入单独的变量并生成一个数字可能的显式调用call基于提取的参数的数量和类型.完全通用是不可能做到这一点的.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有