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:
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;
}
le probleme est lorsque je compile mon code ca me retourne l'erreur :
/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; }
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.

Merci d'avance pour votre aide