gpt4 book ai didi

c++ - C++ 中的泛型函数实现

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:40 27 4
gpt4 key购买 nike

我正在一个新平台上工作,我的代码是:

第 1 层:

Call_To_Layer2 (param1, param2);

第二层:

Call_To_Layer2(param1, param2)
{
Dispatch_Work_To_Thread(param1, param2);
}

Dispatch_Work_To_Thread(param1, param2)
{
// create a new thread and execute the task
}

Layer1 的函数调用可以有任意数量的参数。那么如何在Layer2中设计这样的方法呢?layer2 中的 Dispatch_Work_To_Thread 方法需要函数名称作为参数之一。既然参数个数不是固定的,这怎么设计?

我思考过这个问题的设计,但到现在还想不出任何解决方案。

最佳答案

一个选项是 Call_To_Layer2Dispatch_Work_To_Thread拿一个 std::function<void(void)> , 并使用任何函数名称和参数创建函数对象。

第 1 层功能:

void foo_layer1(param1, param2);
void bar_layer1(param1, param2);

第 2 层:

#include <functional>

Call_To_Layer2 (std::function<void(void)> f); // or reference_wrapper to std::function

f00 = std::bind(foo_layer1, param1, param2);
Call_To_Layer2(foo); // passes it on to `Dispatch_Work_To_Thread`

如果您没有所需的 C++11 支持,您可以使用 boost.functionboost.bind相反。

关于c++ - C++ 中的泛型函数实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12702426/

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