将可变参数从一个函数传递到另一个[重复项]

问题描述 投票:0回答:2

我正在调用函数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++ parameters parameter-passing variadic-functions
2个回答
1
投票

这是一个可变参数,而不是参数包。在C ++中,您将编写:

    template <class... Args>
    void firstFunction(const char* fmt, Args&&... a) {
        secondFunction(fmt, std::forward<Args>(a)...);
    }

0
投票

您可以按照与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

© www.soinside.com 2019 - 2024. All rights reserved.