【发布时间】:2021-05-10 19:45:22
【问题描述】:
我正在为我的应用程序使用 C++ 编写线程管理库,作为其中的一部分,我正在尝试编写一个模板类,该类需要在 run 函数中执行 FunctionPointer。我是一名 Java 开发人员,并尝试如下进行可视化:
class MyRunnable : public Runnable {
public:
MyRunnable(fp)
{
mFp = fp;
}
private:
FunctionPointer mFp;
// Will be called by the thread pool using a thread
void run()
{
mFp();
}
}
class ThreadManager {
public:
void execute(MyRunnable runnable) {
executeOnAThreadPool(runnable);
}
}
由于我不熟悉 C++ 语法,我发现很难将构造函数定义为将FunctionPointer 作为FunctionPointer 的可变数量参数的参数。比如:
MyRunnable(Fp fp, Args... args)
谁能帮我定义上面MyRunnable 类的构造函数。
谢谢。
【问题讨论】:
-
我建议你先尝试现有的 C++ 库,同时学习 lambdas、Invokables、
std::thread's 等。 -
调用
mFp();时可以传递参数。您还需要将这些作为run()的参数提供,或者在构造函数中提供,以存储为类成员变量以供以后使用。 -
你可以省去你的
Runnable接口。std::function用途广泛,可以很好地满足您的需求。 -
@πάνταῥεῖ 是的,我正在寻找一个模板来将参数传递给构造函数并保存为成员变量。我如何实现它?
-
@StoryTeller-UnslanderMonica 请告诉我如何使用 std::function 来解决我的问题。
标签: c++ c++11 lambda poco poco-libraries