c++ - 在 c++ std::function 上下文中无效使用 void 表达式

标签 c++ callback std-function

在下面的代码片段中,调用回调函数时出现“无效使用 void 表达式”错误 由编译器刷新。

#include <iostream>
#include <functional>
using namespace std;
template<class type>
class State {
public:
State(type type1,const std::function<void (type type1 )> Callback)
 {

 }

};

template <class type>
void Callback(type type1 )
{
  //Based on type validation will be done here
}

 int main()
 {
  State<int> obj(10,Callback(10));
  return 0;
}

只是想知道这里出了什么问题,以便解决同样的问题。

最佳答案

看来你想通过Callback<int>函数本身,而不是它的返回值(没有),到 obj 的构造函数。所以就这样做:

State<int> obj(10, Callback<int>);

您当前的代码实际上调用 Callback(10)首先,然后尝试获取其 void “返回值”将其传递给 obj 的构造函数。路过void在 C++ 中是不允许的,这就是编译器提示的原因。 (Callback(10) 在这里是“无效表达式”。)

关于c++ - 在 c++ std::function 上下文中无效使用 void 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58646851/

相关文章:

c++ - 当 `operator[]' 似乎可以完成这项工作时,为什么需要 'operator double*`

使用交换函数和指针的 C++ 冒泡排序

javascript - 具有多个回调的 Javascript 中的全局计时器

c++ - 将 std::function 与模板一起使用

c++ - 字数统计程序 C++

c++ - C++ 中字符串和 ofstream 参数的类似 Java 的 null

c++ - 类型删除到函数调用签名而不会有浪费内存分配的风险?

c++ - 存储和传递 std::function - 按值还是按引用?

javascript - javascript 中的回调问题

javascript - 在 Javascript 中获取 undefined variable