我想做一些类似这个玩具程序的事情:
#include <boost/function.hpp>
#include <iostream>
template <typename T>
void func1(T& g) {
std::cout << 1;
}
template <typename T>
void func2(T& g) {
std::cout << 2;
}
int main() {
boost::function<void(int)> f;
int k;
std::cin >> k;
if (k == 1)
f = func1 < int > ;
else
f = func2 < int > ;
}
但是这段代码不起作用,它说"operator="不清楚。有什么方法可以做这样的事情吗?
更改以下内容:
boost::function<void(int)> f;
对此:
boost::function<void(int&)> f;
以便它与您的功能匹配。
在其他新闻中,C++11标准基本上采用boost::function
作为std::function
,标题<functional>
。