Pouvez-vous m’aider à résoudre cette erreur de compilation?
template static void ComputeGenericDropCount(function func) { T::ForEach([](T *what) { Npc *npc = Npc::Find(what->sourceId); if(npc) func(npc, what->itemCount); // <<<<<<< ERROR HERE // Error 1 error C3493: 'func' cannot be implicitly captured because no default capture mode has been specified }); } static void PreComputeNStar() { // ... ComputeGenericDropCount([](Npc *npc, int i) { npc->nSkinned += i; }); ComputeGenericDropCount([](Npc *npc, int i) { npc->nGathered += i; }); ComputeGenericDropCount([](Npc *npc, int i) { npc->nMined += i; }); }
Je ne comprends pas pourquoi ça me donne l’erreur et je ne sais pas comment le réparer. ComputeGenericDropCount(auto func)
ne fonctionne pas non plus.
Vous devez spécifier comment capturer le func
dans le lambda.
[]
ne capture rien
[&]
capture par référence
[=]
capture par valeur (copie)
T::ForEach([&](T *what) {
Je vous recommande également d’envoyer func
par référence const.
static void ComputeGenericDropCount(const function& func)