我有一个容器对象:
R Container;
R的类型为list<T*>
或vector<T*>
我正在尝试编写以下函数:
template<typename T, typename R>
T& tContainer_t<T, R>::Find( T const item ) const
{
typename R::const_iterator it = std::find_if(Container.begin(), Container.end(), [item](const R&v) { return item == v; });
if (it != Container.end())
return (**it);
else
throw Exception("Item not found in container");
}
尝试方法时(v是我班级的一个对象)
double f = 1.1;
v.Find(f);
我得到binary '==' : no operator found which takes a left-hand operand of type 'const double' (or there is no acceptable conversion)
我对lambda表达式语法感到困惑,我应该在那里写什么,找不到任何友好的解释。
有什么问题? 10倍。
答案 0 :(得分:6)
缺少一些上下文,但我注意到:
**it
,因此您可能想要比较*v==itemt
const R&v
的{{1}}传递到lambda 这是工作代码,删除了缺少的类引用:
const T&v