c++函数指针作为参数的问题
usingF=void(constarrayList<int>&);voidtest(std::function<F>f);template<classT>voidrev...
using F = void(const arrayList<int> &);
void test(std::function<F>f);
template<class T>void reverse(const arrayList<T> &);
F *f = reverse < int > ;
test(f);//没问题
test(reverse<int>);//报错, 不存在从 "<unknown-type>" 转换到 "std::function<F>" 的适当构造函数
请问传递f和传递reverse<int>区别在哪里啊?
如果我把test参数改为F f,调用test(reverse<int>);就没问题了,是因为reverse<int>到function<F>隐式转化了2次吗
test(std::function<F>f)使用这个参数是为了传递类成员函数 展开
void test(std::function<F>f);
template<class T>void reverse(const arrayList<T> &);
F *f = reverse < int > ;
test(f);//没问题
test(reverse<int>);//报错, 不存在从 "<unknown-type>" 转换到 "std::function<F>" 的适当构造函数
请问传递f和传递reverse<int>区别在哪里啊?
如果我把test参数改为F f,调用test(reverse<int>);就没问题了,是因为reverse<int>到function<F>隐式转化了2次吗
test(std::function<F>f)使用这个参数是为了传递类成员函数 展开
1个回答
2015-06-13
展开全部
考虑是否声明了其他reverse函数,或者意外把其他命名空间的 reverse 函数(例如 std::reverse )引入当前命名空间……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询