要求转换为非标量类型(功能)

时间:2014-03-28 23:50:13

标签: c++ functional-programming

bool blur( ... ) {} 

void Effects::genQueue(std::queue<std::function<bool()> > q, std::function<unsigned()> dice){
   std::vector< std::function<bool()> > funcs;
   funcs.push_back( blur );
}

我正在尝试创建一个函数向量,&#34;模糊&#34;作为其中一个功能,我无法弄清楚这段代码有什么问题。

Error : "error: conversion from 'void (*)(std::queue<std::function<bool()> >, std::function<unsigned int()>)'
to non-scalar type 'std::function<void()>' requested"

请求的转化是什么以及如何解决?

1 个答案:

答案 0 :(得分:0)

  

请求的转化是什么?

错误很明显:blur有两个参数,因此无法转换为不带参数的函数。 (至少,错误消息暗示它需要两个参数;你发布的声明暗示它是可变的。我假设错误来自你的真实代码,而...只是为了让问题更难)

  

我该如何解决?

不知道你想用这些功能做什么,很难说。也许你可以改变blur,这样它就不需要参数;或者您可以将函数类型更改为与blur兼容的内容;或者你可以将参数绑定到blur

funcs.push_back(std::bind(blur, something, something_else));