我正在调用函数firstFunction
并传递可变参数(const char* fmt, ...)
:我想在这里执行一些计算,然后将参数传递给另一个函数secondFunction
,该函数以(const char* fmt, ...)
作为输入参数。
void firstFunction(const char* fmt, ...)
{
//does some pre-condition stuff
//calls secondFunction (how?)
}
void secondFunction(const char* fmt, ...)
{
//prints the input parameters in a va_list using vsnprtinf
}
将可变参数从一个函数传递到另一个的C ++语法是什么?
编辑1:我不能使用模板,因为我希望这些函数成为纯虚函数声明的定义。
这是一个可变参数,而不是参数包。在C ++中,您将编写:
template <class... Args>
void firstFunction(const char* fmt, Args&&... a) {
secondFunction(fmt, std::forward<Args>(a)...);
}
您可以按照与vprintf
系列相同的方式进行操作,将va_args
传递给您的函数:
#include <stdarg.h>
#include <stdio.h>
void secondFunction(const char* fmt, va_list args)
{
vprintf(fmt, args);
}
void firstFunction(const char* fmt, ...)
{
va_list args;
va_start(args, fmt);
secondFunction(fmt, args);
va_end(args);
}
int main()
{
firstFunction("%d %d %d", 1, 2, 3);
}
打印1, 2, 3