Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 功能插件和任务队列尝试_C++_Templates_Functional Programming_Template Meta Programming - Fatal编程技术网

C++ 功能插件和任务队列尝试

C++ 功能插件和任务队列尝试,c++,templates,functional-programming,template-meta-programming,C++,Templates,Functional Programming,Template Meta Programming,我试图证明一个系统的概念,在这个系统中,我可以通过基本上依赖类型和静态函数,将要在上下文中调用的任务排队。我希望它能像这样工作: intmain() { 插件管理器; ContextId ctxId=pm.makeContext(1,“un”); queueTask(ctxId,Plugin::execute,2,“deux”); pm.run(); } 下面的代码似乎几乎达到了目的,但是链接的代码无法解析ITask方法来获取任务的上下文id并使用其组件执行任务。我相信我可能通过模版把戏丢失了

我试图证明一个系统的概念,在这个系统中,我可以通过基本上依赖类型和静态函数,将要在上下文中调用的任务排队。我希望它能像这样工作:

intmain()
{
插件管理器;
ContextId ctxId=pm.makeContext(1,“un”);
queueTask(ctxId,Plugin::execute,2,“deux”);
pm.run();
}
下面的代码似乎几乎达到了目的,但是链接的代码无法解析
ITask
方法来获取任务的上下文id并使用其组件执行任务。我相信我可能通过模版把戏丢失了实际类型的信息,但我不知道在哪里

#包括
#包括
#包括
使用名称空间std;
//函数展开函数上的参数元组
模板
自动调度参数(函数f、参数p、标准::索引顺序)
{
返回f(std::get(p)…);
}
//函数准备索引序列以调用dispatchParams
模板
自动调用WithTuple(函数f,tuple args)
{
返回调度参数(f,args,std::make_index_sequence());
}
//插件标识符
枚举类插件
{
PluginA
};
//识别对象
结构上下文ID
{
黄花蒿;
int instanceId;
布尔运算符OrGetContextId();
任务->执行(ctx);
_tasks.pop_front();
}
}
映射上下文;
任务;
};
//我们正在尝试注册的插件
结构插件
{
静态常数plugineum type=plugineum::PluginA;
//插件上下文/数据对象的定义
结构上下文:IContext
{
上下文(上下文id、整数、常量字符*字符串)
:IContext{id}
,_数据编号(编号)
,_数据字符串(字符串)
{}
const char*getString(){return\u dataString;}
int getNumber(){return\u dataNumber;}
常量字符*_数据字符串;
int_数据编号;
};
静态void execute(插件::上下文*上下文,整数,常量字符*字符串)
{

cout您的ITask虚拟方法未声明为抽象。这意味着链接器会查找它们的实现。只需将其更改为:

virtual void execute(IContext* ctx) = 0;
virtual ContextId getContextId() = 0;

哦!工作太晚了你会忘记的那种事^^!很好,谢谢你的阅读。