Bonjour à tous,
voila je viens de voir un peu comment fonctionner les iterators et les lambda et j'ai voulu m'entrainer un peu. Mais voila je coince. Je vous montre mon code:
le probleme est lorsque je compile mon code ca me retourne l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #include <iostream> #include <vector> #include <algorithm> class A { public: A(int value = 0): m_value(value) {}; int m_value; }; int main() { std::vector<A> tab(10); (*(tab.begin() + 5)).m_value = 66; auto it = std::find(tab.begin(), tab.end(), [](A &a){ if( a.m_value == 66) { std::cout << "yes" << std::endl; return true; } else { return false; } }); std::cout << it->m_value << std::endl; return 0; }je ne comprends pas du tout l'erreur qu'il me retourne. Le compilateur me parle de operator== alors que je ne vois aucun problème./usr/include/c++/8/bits/predefined_ops.h:241:17: error: no match for ‘operator==’ (operand types are ‘A’ and ‘const main()::<lambda(A&)>’)
{ return *__it == _M_value; }
Merci d'avance pour votre aide
Partager