小编Luk*_*uka的帖子

C++如何将参数包存储为变量

目前我在尝试存储参数包时遇到问题,这是设计的示例代码:

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++

21
推荐指数
2
解决办法
7519
查看次数

C++使用任意数量的参数传递任何函数的函数

这在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++.请帮忙:_ |

c++ templates arguments function

2
推荐指数
1
解决办法
324
查看次数

标签 统计

c++ ×2

arguments ×1

function ×1

templates ×1