432 void RoleExternModel::getShareConfig(SourceList& sourceList, std::vector<UInt16>& packs, ShopModel& shopModel)
433 {
434 std::copy(Packs, Packs + SHARE_PRIZE, std::insert_iterator<std::vector<UInt16> >(packs, packs.begin()));
435 struct Fun {
436 std::vector<std::pair<UInt16, UInt8> > pairs;
437 void operator () (UInt16 type) {
438 pairs.push_back(std::make_pair<UInt16, UInt8>(type, Configuration::PACKS));
439 }
440 };
441 Fun fun();
442 std::for_each(Packs, Packs + SHARE_PRIZE, fun);
443 shopModel shopModel(fun.pairs);
444 shopModel.load(sourceList);
445 }
为什么编译器说:
错误:非本地功能 “宠物:: RoleExternModel :: getShareConfig(宠物:: SOURCELIST和放大器;, std :: vector&gt;&amp;, Pet :: ShopModel&amp;):: Fun Pet :: fun()'使用本地类型 “宠物:: RoleExternModel :: getShareConfig(宠物:: SOURCELIST和放大器;, std :: vector&gt;&amp;, 宠物:: ShopModel&安培)::娱乐”
如何制作legel?
答案 0 :(得分:2)
答案 1 :(得分:0)
其他答案在技术上对编译器错误是正确的,但错过了一个微妙的点:fun
使用不正确。它似乎是一个局部变量,用于收集fun.pairs
中的结果。但是,std::for_each
可以复制fun
,然后fun.pairs
不会更新。
正确的解决方案:Fun fun = std::for_each(Packs, Packs + SHARE_PRIZE, Fun());
。