Can you help me resolve this compiler error?
template<class T>
static void ComputeGenericDropCount(function<void(Npc *, int)> 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<DropSkinningNpcCount>([](Npc *npc, int i) { npc->nSkinned += i; });
ComputeGenericDropCount<DropHerbGatheringNpcCount>([](Npc *npc, int i) { npc->nGathered += i; });
ComputeGenericDropCount<DropMiningNpcCount>([](Npc *npc, int i) { npc->nMined += i; });
}
I can't understand why it's giving me the error and I don't know how to fix it. ComputeGenericDropCount(auto func)
doesn't work either.
You need to specify how to capture func
into the lambda.
[]
don't capture anything
[&]
capture-by-reference
[=]
capture-by-value (copy)
T::ForEach([&](T *what) {
I'd also recommend that you should send func
by const reference.
static void ComputeGenericDropCount(const function<void(Npc *, int)>& func)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With