我想做这样的玩具程序:
#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 > ;
}
但是这段代码不起作用,并且它表示&#34;运算符=&#34;不清楚。我有什么方法可以做这样的事吗?
答案 0 :(得分:0)
改变这个:
boost::function<void(int)> f;
到此:
boost::function<void(int&)> f;
这样它就与你的功能相匹配。
在其他新闻中,C ++ 11标准基本上采用boost::function
作为std::function
,标题为<functional>
。