Que signifie [=] ?

Que signifie [=] ? - C++ - Programmation

Marsh Posté le 01-11-2014 à 19:31:45    

Bonjour,
 
Désolé de la question de noob le cas échéant, mais impossible de trouver l'info sur google ni nulle part.
Dans un code de démo j'ai:
 

Code :
  1. listener->onTouchBegan = [=](Touch* touch, Event* event){
  2.            
  3.             Vec2 locationInNode = this->convertToNodeSpace(touch->getLocation());
  4.             Size s = this->getContentSize();
  5.             Rect rect = Rect(0, 0, s.width, s.height);
  6.            
  7.             if (rect.containsPoint(locationInNode))
  8.             {
  9.                 this->setColor(Color3B::RED);
  10.                 return true;
  11.             }
  12.             return false;
  13.         };


 
Et donc je ne sais pas à quoi sert le [=] en rouge ... quelqu'un pourrait-il m'éclairer ?  
 
Merci


Message édité par Krismu le 02-11-2014 à 14:58:59
Reply

Marsh Posté le 01-11-2014 à 19:31:45   

Reply

Marsh Posté le 01-11-2014 à 22:18:25    

C'est pour les fonctions lambda (C++11), ça permet de dire que tu captures des variables automatiquement par copie :
 

Code :
  1. int main()
  2. {
  3.     int a = 7;
  4.     auto X = [=]()->void { std::cout<<"a = "<<a<<std::endl; }; // On capture tout par copie
  5.     auto Y = [&]()->void { std::cout<<"a = "<<a<<std::endl; }; // On capture tout par ref  
  6.     a = 2;
  7.     X(); // Affichera 7
  8.     Y(); // Affichera 2
  9. }


---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 01-11-2014 à 22:31:43    

Capture par copie. Toutes les variables auxquelles ta lambda (C++11) se réfère et qui proviennent du contexte englobant sont copiées dans la lambda (capture par valeur).  
http://www.oracle.com/technetwork/ [...] 89895.html
 
En l'occurence, dans ton bout de code, cela ne fait aucune différence car il n'y a pas de référence à des variables englobantes autres que this.
 
> "impossible de trouver l'info sur google ni nulle part. "
 
Google "C++ lambda expression", il y a plein d'infos la-dessus.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 02-11-2014 à 12:06:11    

Merci pour ces infos :jap:  
 
Bon je crois que je vais devoir sortir des années 80 concernant le C++ :sweat:  

Reply

Marsh Posté le 02-11-2014 à 19:43:45    

Pour info, à propos de "l'impossibilité de trouver sur google" ce genre d'info, la plupart (voire tous) des moteurs de recherche filtre les caractères spéciaux et la ponctuation dans les expressions de recherche. Donc effectivement très ennuyeux pour chercher sur un opérateur à la syntaxe exotique.

 

Une astuce à connaître pour pallier ça et au moins savoir à quoi tu as affaire c'est de lancer la même recherche sur StackOverflow par exemple : http://stackoverflow.com/search?q=%22[%3D]%22+c%2B%2B (lien à copier entièrement, le forum n'aime pas les crochets)
Le premier résultat t'aurait déjà bien orienté : http://stackoverflow.com/questions [...] -functions


Message édité par TotalRecall le 02-11-2014 à 19:47:40

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 02-11-2014 à 19:47:48    

Ah ouais super info, j'ai essayé à droite à gauche mais les sites embarquent souvent la recherche google, du coup ça donnait rien.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed