gpt4 book ai didi

c++:将任意数量的参数传递给另一个函数

转载 作者:行者123 更新时间:2023-11-30 00:55:19 27 4
gpt4 key购买 nike

我有一个接受 3 个参数的函数。其他函数的 vector 、void* 和任意参数列表。该函数旨在将其 void* 和任意参数列表传递给列表中的每个函数,这些函数将自行处理。这是我想要的示例:

typedef void (*fptr)(const void* userdata, ...);

void execute_all(vector<fptr> funcs, void* userdata, ...){
for (int i = 0;i<funcs.size();i++){
fptr func = funcs[i];
//execute func with userdata and ... from above.
//like (*func)(userdata, ...); which obviously doesnt work
}
}

我需要知道如何将所有参数转发到每个函数中。不要担心确保兼容性。我在别处处理。

谢谢

最佳答案

您不能直接将可变参数从一个可变参数函数传递给另一个可变参数函数。但是,您可以让被调用的(内部)函数接受一个 va_list,然后传递该列表:

#include <cstdarg>

void callee(void *first, va_list args);

void caller(void *first, ...)
{
va_list args;
va_start(args, first);
callee(first, args);
va_end(args);
}

关于c++:将任意数量的参数传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12712212/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com