Ce code:Erreur dans la syntaxe d'expression lambda
#include "Backpack.h"
#include <sstream>
#include <algorithm>
int Backpack::getCurrentWeight()
{
int weight = 0;
std::for_each(items.begin(),items.end(),[&](std::shared_ptr<PickupItem> item){ //8
weight +=item->getWeight();
});
return weight;
}
génère ces erreurs:
Backpack.cpp: In member function 'int Backpack::getCurrentWeight()':
Backpack.cpp:8: error: expected primary-expression before '[' token
Backpack.cpp:8: error: expected primary-expression before ']' token
Backpack.cpp:8: error: expected primary-expression before 'item'
Le projet se base sur Linux, mais sur Windows, il ne fonctionne pas. Ma version de Qt: Qt 4.7.4 pour le bureau - MinGW 4.4 (Qt SDK). J'ai ajouté l'indicateur suivant: QMAKE_CXXFLAGS + = -std = C++ 0x
Je ne pense pas que ce soit un problème avec la version Qt, mais un problème avec la version du compilateur. Il semble qu'il ne supporte pas les expressions lambda, donc il pense que vous essayez d'utiliser 'operator []' sans spécifier l'objet dans lequel vous voulez l'utiliser. – Gorpik