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

问题描述 投票:2回答:1

在下面的代码段中,调用回调函数“无效使用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;
}

只想知道这里出了什么问题,以便可以解决。

c++ callback std-function
1个回答
0
投票

似乎您想将Callback<int>函数本身而不是其返回值(没有返回值)传递给State<int>的构造函数。因此,只需执行此操作即可,而不是调用函数并尝试将void传递给构造函数:[]

State<int> obj(10,Callback<int>);
© www.soinside.com 2019 - 2024. All rights reserved.