C++ C++“;运算符=“不匹配;lambda函数中的错误

C++ C++“;运算符=“不匹配;lambda函数中的错误,c++,lambda,compiler-errors,C++,Lambda,Compiler Errors,我在非静态类成员函数中有一个lambda函数,用于std::find //Somewhere in the header... Gtk::ComboBoxText *optionChoiceComboBoxText = nullptr; // Initialized later in code std::vector<OptionData> optionList; int currentOptionPositionInList = -1; // In Interface.cpp

我在非静态类成员函数中有一个lambda函数,用于std::find

//Somewhere in the header...
Gtk::ComboBoxText *optionChoiceComboBoxText = nullptr; // Initialized later in code
std::vector<OptionData> optionList;
int currentOptionPositionInList = -1; 

// In Interface.cpp
Interface::optionChangedHandler() {
currentOptionPositionInList = std::distance(optionList.begin(),
                                            find(optionList.begin(), optionList.end(), [&](OptionData const& o) {
                                                std::string s = optionChoiceComboBoxText->get_active_text();
                                                return s == o.name;
                                            })); //Error is here
}
//头中的某个地方。。。
Gtk::ComboxText*OptionChoiceComboxText=nullptr;//稍后在代码中初始化
向量选择列表;
int currentOptionPositionInList=-1;
//在Interface.cpp中
接口::optionChangedHandler(){
CurrentOptionPositionList=std::distance(optionList.begin(),
查找(optionList.begin(),optionList.end(),[&](OptionData常量(&o){
std::string s=optionChoiceComboxText->get_active_text();
返回s==o.name;
}));//错误在这里
}
以下是注释中的错误:

[ 66%] Building CXX object CMakeFiles/RNS.dir/src/GUI/Interface.cpp.o
In file included from /usr/include/c++/5/bits/stl_algobase.h:71:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/ostream:38,
                 from /usr/include/c++/5/iterator:64,
                 from /usr/include/glibmm-2.4/glibmm/ustring.h:29,
                 from /usr/include/glibmm-2.4/glibmm/exception.h:25,
                 from /usr/include/glibmm-2.4/glibmm/error.h:23,
                 from /usr/include/glibmm-2.4/glibmm/thread.h:49,
                 from /usr/include/glibmm-2.4/glibmm.h:87,
                 from /usr/include/giomm-2.4/giomm.h:23,
                 from /home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/bits/predefined_ops.h: In instantiation of ‘bool __gnu_cxx::__ops::_Iter_equals_val<_Value>::operator()(_Iterator) [with _Iterator = __gnu_cxx::__normal_iterator<OptionData*, std::vector<OptionData> >; _Value = const Interface::optionChangedHandler()::<lambda(const OptionData&)>]’:
/usr/include/c++/5/bits/stl_algo.h:120:14:   required from ‘_RandomAccessIterator std::__find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<OptionData*, std::vector<OptionData> >; _Predicate = __gnu_cxx::__ops::_Iter_equals_val<const Interface::optionChangedHandler()::<lambda(const OptionData&)> >]’
/usr/include/c++/5/bits/stl_algo.h:161:23:   required from ‘_Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = __gnu_cxx::__normal_iterator<OptionData*, std::vector<OptionData> >; _Predicate = __gnu_cxx::__ops::_Iter_equals_val<const Interface::optionChangedHandler()::<lambda(const OptionData&)> >]’
/usr/include/c++/5/bits/stl_algo.h:3790:28:   required from ‘_IIter std::find(_IIter, _IIter, const _Tp&) [with _IIter = __gnu_cxx::__normal_iterator<OptionData*, std::vector<OptionData> >; _Tp = Interface::optionChangedHandler()::<lambda(const OptionData&)>]’
/home/crefrod/RNS/src/GUI/Interface.cpp:70:50:   required from here
/usr/include/c++/5/bits/predefined_ops.h:194:17: error: no match for ‘operator==’ (operand types are ‘OptionData’ and ‘const Interface::optionChangedHandler()::<lambda(const OptionData&)>’)
  { return *__it == _M_value; }
                 ^
In file included from /usr/include/c++/5/iterator:63:0,
                 from /usr/include/glibmm-2.4/glibmm/ustring.h:29,
                 from /usr/include/glibmm-2.4/glibmm/exception.h:25,
                 from /usr/include/glibmm-2.4/glibmm/error.h:23,
                 from /usr/include/glibmm-2.4/glibmm/thread.h:49,
                 from /usr/include/glibmm-2.4/glibmm.h:87,
                 from /usr/include/giomm-2.4/giomm.h:23,
                 from /home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/bits/stl_iterator.h:820:5: note: candidate: template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator==(const __gnu_cxx::__normal_iterator<_IteratorL, _Container>&, const __gnu_cxx::__normal_iterator<_IteratorR, _Container>&)
     operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
     ^
/usr/include/c++/5/bits/stl_iterator.h:820:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/5/bits/stl_algobase.h:71:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/ostream:38,
                 from /usr/include/c++/5/iterator:64,
                 from /usr/include/glibmm-2.4/glibmm/ustring.h:29,
                 from /usr/include/glibmm-2.4/glibmm/exception.h:25,
                 from /usr/include/glibmm-2.4/glibmm/error.h:23,
                 from /usr/include/glibmm-2.4/glibmm/thread.h:49,
                 from /usr/include/glibmm-2.4/glibmm.h:87,
                 from /usr/include/giomm-2.4/giomm.h:23,
                 from /home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/bits/predefined_ops.h:194:17: note:   ‘OptionData’ is not derived from ‘const __gnu_cxx::__normal_iterator<_IteratorL, _Container>’
  { return *__it == _M_value; }
                 ^
In file included from /usr/include/c++/5/iterator:63:0,
                 from /usr/include/glibmm-2.4/glibmm/ustring.h:29,
                 from /usr/include/glibmm-2.4/glibmm/exception.h:25,
                 from /usr/include/glibmm-2.4/glibmm/error.h:23,
                 from /usr/include/glibmm-2.4/glibmm/thread.h:49,
                 from /usr/include/glibmm-2.4/glibmm.h:87,
                 from /usr/include/giomm-2.4/giomm.h:23,
                 from /home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/bits/stl_iterator.h:827:5: note: candidate: template<class _Iterator, class _Container> bool __gnu_cxx::operator==(const __gnu_cxx::__normal_iterator<_Iterator, _Container>&, const __gnu_cxx::__normal_iterator<_Iterator, _Container>&)
     operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
     ^
/usr/include/c++/5/bits/stl_iterator.h:827:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/5/bits/stl_algobase.h:71:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/ostream:38,
                 from /usr/include/c++/5/iterator:64,
                 from /usr/include/glibmm-2.4/glibmm/ustring.h:29,
                 from /usr/include/glibmm-2.4/glibmm/exception.h:25,
                 from /usr/include/glibmm-2.4/glibmm/error.h:23,
                 from /usr/include/glibmm-2.4/glibmm/thread.h:49,
                 from /usr/include/glibmm-2.4/glibmm.h:87,
                 from /usr/include/giomm-2.4/giomm.h:23,
                 from /home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/bits/predefined_ops.h:194:17: note:   ‘OptionData’ is not derived from ‘const __gnu_cxx::__normal_iterator<_Iterator, _Container>’
  { return *__it == _M_value; }
                 ^
In file included from /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:33:0,
                 from /usr/include/c++/5/bits/allocator.h:46,
                 from /usr/include/c++/5/string:41,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/ostream:38,
                 from /usr/include/c++/5/iterator:64,
                 from /usr/include/glibmm-2.4/glibmm/ustring.h:29,
                 from /usr/include/glibmm-2.4/glibmm/exception.h:25,
                 from /usr/include/glibmm-2.4/glibmm/error.h:23,
                 from /usr/include/glibmm-2.4/glibmm/thread.h:49,
                 from /usr/include/glibmm-2.4/glibmm.h:87,
                 from /usr/include/giomm-2.4/giomm.h:23,
                 from /home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/ext/new_allocator.h:139:5: note: candidate: template<class _Tp> bool __gnu_cxx::operator==(const __gnu_cxx::new_allocator<_Tp>&, const __gnu_cxx::new_allocator<_Tp>&)
     operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
     ^
/usr/include/c++/5/ext/new_allocator.h:139:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/5/bits/stl_algobase.h:71:0,
                 from /usr/include/c++/5/bits/char_traits.h:39,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/ostream:38,
                 from /usr/include/c++/5/iterator:64,
                 from /usr/include/glibmm-2.4/glibmm/ustring.h:29,
                 from /usr/include/glibmm-2.4/glibmm/exception.h:25,
                 from /usr/include/glibmm-2.4/glibmm/error.h:23,
                 from /usr/include/glibmm-2.4/glibmm/thread.h:49,
                 from /usr/include/glibmm-2.4/glibmm.h:87,
                 from /usr/include/giomm-2.4/giomm.h:23,
                 from /home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/bits/predefined_ops.h:194:17: note:   ‘OptionData’ is not derived from ‘const __gnu_cxx::new_allocator<_Tp>’
  { return *__it == _M_value; }
[66%]构建CXX对象cmakfiles/RNS.dir/src/GUI/Interface.cpp.o
在/usr/include/c++/5/bits/stl_algobase.h:71:0中包含的文件中,
从/usr/include/c++/5/bits/char_traits.h:39,
从/usr/include/c++/5/ios:40,
从/usr/include/c++/5/ostream:38,
从/usr/include/c++/5/iterator:64,
从/usr/include/glibmm-2.4/glibmm/ustring.h:29,
从/usr/include/glibmm-2.4/glibmm/exception.h:25,
从/usr/include/glibmm-2.4/glibmm/error.h:23,
从/usr/include/glibmm-2.4/glibmm/thread.h:49,
从/usr/include/glibmm-2.4/glibmm.h:87,
from/usr/include/giomm-2.4/giomm.h:23,
from/home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/bits/predefined_ops.h:在'bool\uu gnu\u cxx::\uu ops::\u Iter\u equals\u val::operator()(\u Iterator)[with u Iterator=\uu gnu cxx::\u normal\u Iterator;\u Value=const Interface::optionChangedHandler():]:
/usr/include/c++/5/bits/stl_algo.h:120:14:从“_randomAccessIteratorstd::_find_if”(_RandomAccessIterator,_RandomAccessIterator,_Predicate,std::random_access_iterator_tag)[带_RandomAccessIterator=u gnu_cxx::_normalIterator;_Predicate=_gnucxx:_gnucxx:_ops::_Iter=u val]”
/usr/include/c++/5/bits/stl_algo.h:161:23:来自“_iteratorstd::_find_if(_Iterator,_Iterator,_Predicate)[带_Iterator=u gnu cxx::u normal_Iterator;_Predicate=u gnu cxx::u ops:u Iter_equals][uu val]的必需
/usr/include/c++/5/bits/stl_algo.h:3790:28:从“_iiterstd::find(_IIter,_IIter,const)Tp&”)中需要[with _IIter=u gnu_cxx::uu normal_迭代器;_Tp=接口::optionChangedHandler():]”
/home/crefrod/RNS/src/GUI/Interface.cpp:70:50:此处需要
/usr/include/c++/5/bits/prefined_ops.h:194:17:错误:与“operator==”不匹配(操作数类型为“OptionData”和“const Interface::optionChangedHandler():”)
{return*\uu it==\u M_value;}
^
在/usr/include/c++/5/iterator:63:0中包含的文件中,
从/usr/include/glibmm-2.4/glibmm/ustring.h:29,
从/usr/include/glibmm-2.4/glibmm/exception.h:25,
从/usr/include/glibmm-2.4/glibmm/error.h:23,
从/usr/include/glibmm-2.4/glibmm/thread.h:49,
从/usr/include/glibmm-2.4/glibmm.h:87,
from/usr/include/giomm-2.4/giomm.h:23,
from/home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/bits/stl_iterator.h:820:5:注:候选:模板bool\uu gnu\u cxx::operator==(const\uu gnu\u cxx::\uu normal\u迭代器&,const\uu gnu cxx::\uu normal\u迭代器&)
运算符==(常量、正常迭代器和lhs,
^
/usr/include/c++/5/bits/stl_迭代器。h:820:5:注意:模板参数推导/替换失败:
在/usr/include/c++/5/bits/stl_algobase.h:71:0中包含的文件中,
从/usr/include/c++/5/bits/char_traits.h:39,
从/usr/include/c++/5/ios:40,
从/usr/include/c++/5/ostream:38,
从/usr/include/c++/5/iterator:64,
从/usr/include/glibmm-2.4/glibmm/ustring.h:29,
从/usr/include/glibmm-2.4/glibmm/exception.h:25,
从/usr/include/glibmm-2.4/glibmm/error.h:23,
从/usr/include/glibmm-2.4/glibmm/thread.h:49,
从/usr/include/glibmm-2.4/glibmm.h:87,
from/usr/include/giomm-2.4/giomm.h:23,
from/home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/bits/predefined_ops.h:194:17:注意:“OptionData”不是从“const”派生出来的
{return*\uu it==\u M_value;}
^
在/usr/include/c++/5/iterator:63:0中包含的文件中,
从/usr/include/glibmm-2.4/glibmm/ustring.h:29,
从/usr/include/glibmm-2.4/glibmm/exception.h:25,
从/usr/include/glibmm-2.4/glibmm/error.h:23,
从/usr/include/glibmm-2.4/glibmm/thread.h:49,
从/usr/include/glibmm-2.4/glibmm.h:87,
from/usr/include/giomm-2.4/giomm.h:23,
from/home/crefrod/RNS/src/GUI/Interface.cpp:5:
/usr/include/c++/5/bits/stl\u迭代器。h:827:5:注:候选:模板bool\uuu-gnu-cxx::operator==(const\uu-gnu-cxx:::\uu-normal\u迭代器&,const\uu-gnu-cxx::\uu-normal\u迭代器&)
运算符==(常量、正常迭代器和lhs,
^
/usr/include/c++/5/bits/stl_迭代器。h:827:5:注意:模板参数推导/替换失败:
在/usr/include/c++/5/bits/stl_algobase.h:71:0中包含的文件中,
从/usr/include/c++/5/bits/char_traits.h:39,
从/usr/include/c++/5/ios:40,
从/usr/include/c++/5/ostream:38,
从/usr/include/c++/5/iterator:64,
从/usr/include/glibmm-2.4/glibmm/ustring.h:29,
从/usr/include/glibmm-2.4/glibmm/exception.h:25,
from/usr/include/glibmm-2.4/glibmm/e