2012-01-02 5 views
0

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

+0

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

Répondre

2

Votre compilateur ne prend pas en charge les expressions lambda.

+0

Quel compilateur suggérez-vous sur Windows? – mmvie

+1

@mmvie Les nouvelles versions de MinGW supportent lambdas. – jrok

+0

J'ai installé QT SDK, puis-je mettre à niveau MinGW en installant la dernière version sur QtSDK/mingw? – mmvie