c++ - 接受 lambda 作为参数的类方法 - 错误消息
问题描述
我试图创建这样的方法:
WeaponsDatabase
{
public:
template<typename Functor>
QList<const WeaponData*> getSpecificWeapons(Functor criterium);
};
template<typename Functor>
QList<const WeaponData*> WeaponsDatabase::getSpecificWeapons(Functor criterium)
{
QList<const WeaponData*> weaponsForCriterium;
foreach (const WeaponData *weapon, weapons)
{
if (criterium(weapon))
{
weaponsForCriterium.append(weapon);
}
}
return weaponsForCriterium;
}
似乎没问题,它编译了。然后我尝试在其他地方使用它:
auto criterium = [hardpoint](const WeaponData *weapon)->bool
{
return weapon->hardpoint == hardpoint;
};
WeaponsDatabase::getInstance().getSpecificWeapons(criterium);
它不起作用,我不明白错误消息。各位大侠能帮我解释一下吗?
In file included from ..\equipmentgroupwidget.cpp:3:0:
..\weaponsdatabase.h:35:57: error: 'QList<const WeaponData*> WeaponsDatabase::getSpecificWeapons(Functor) [with Functor = EquipmentGroupWidget::EquipmentGroupWidget(const QString&, QWidget*)::<lambda(const WeaponData*)>]', declared using local type 'EquipmentGroupWidget::EquipmentGroupWidget(const QString&, QWidget*)::<lambda(const WeaponData*)>', is used but never defined [-fpermissive]
template<typename Functor> QList<const WeaponData*> getSpecificWeapons(Functor criterium);
解决方案
@WernerHenze 的所有功劳——将实现移到类中解决了这个问题。非常感谢你的伙伴。
推荐阅读
- pandas - 有没有更快的方法来使用 pandas 连接巨大的数据帧(40GB)
- docker - Google App Engine:为 Scrapy + Splash 加载另一个 Docker 映像
- reactjs - Material-ui - 树状视图 展开全部
- excel - 使用 VBA 在 Excel 2016 中自定义功能区
- python - 转义字符串中的十六进制字符
- android - 如何在不可见编辑器/场景/播放器的情况下在 Unity 中渲染?
- javascript - 表单提交后的jQuery .on('click)不再分配
- c# - 重定向内部网络中的外部 http 连接
- inno-setup - Inno Setup - 自动生成选项以允许用户选择要安装的文件
- python - 谷歌分析在报告 API 中获取用户 ID