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

conversion from to non-scalar type requested ( functional )

本文关键字:标量 功能 类型 类型转换 请求      更新时间:2023-10-16
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 );
}

我想做一个函数向量,"blur"是其中一个函数,我不知道这段代码有什么问题。

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

正在请求的这个转换是什么,我如何修复它?

请求的转换是什么?

错误很明显:blur有两个参数,所以不能转换为不带参数的函数。(至少,错误消息暗示它接受两个参数;你发布的声明暗示它是可变的。我假设错误来自您的实际代码,而...只是为了使问题更难)。

我如何修复它?

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

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