目前我在尝试存储参数包时遇到问题,这是设计的示例代码:
template<typename Func, typename... Args>
void handleFunc(Func func, Args&&... args) {
struct nest {
Func nestFunc;
Args... nestArgs; // I DONT KNOW WHAT TO DO HERE
void setup(Func func, Args... args) {
nestFunc = func;
nestArgs = (args)...; // SO I CAN SET IT HERE
}
// Later I will forward this and run the function with its arguments
unsigned process() {
nestFunc(std::forward<Args>(nestArgs)...); // USE IT HERE
return 0;
}
};
nest* myNest;
myNest->setup(func, (args)...);
}
Run Code Online (Sandbox Code Playgroud)
这是问题所涉及的所有内容的示例,我需要存储参数以便稍后在我的nest结构中调用.此外,如果你有一个解决方案来存储它,但设置它与我的不同,也请让我知道这一点.谢谢.
这在c ++中可能是不可能的,但我在网上搜索并发现似乎没有任何效果.
我不知道它是如何工作的,但是如果我将一个函数"A"传递给另一个函数"B",我可以在"A"中执行函数"B",如下所示:
template<typename Func>
void process(Func func) {
func();
}
void myVoidFunction() {
cout << "I did something!?" << endl;
}
process(myVoidFunction); // This will run myVoidFunction();
Run Code Online (Sandbox Code Playgroud)
现在,我不知道如何为一个有任意数量的参数的函数做这个,我的基本理论就是这个(我希望你知道我的意思):
template<typename Func>
void process(Func func, ...) {
func(...);
}
void myNewFunction(int, int, char*) {}
process(myNewFunction, 1, 2, "Hello World!");
Run Code Online (Sandbox Code Playgroud)
如果进程可以返回与给定函数相同的类型(如果那不要求太多:P),那就更好了
我不希望任何库执行此操作,我确信有一种方法可以使用JUST C++.请帮忙:_ |