接受 lambda 作为参数的类方法 - 错误消息
A class method which accepts lambda as parameter - error message
我尝试创建这样的方法:
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的所有功劳 - 将实现移动到类中解决了这个问题。非常感谢伙计。
相关文章:
- 我的模板类方法返回错误类型?
- 类方法 - 数据结构中 For 循环的运行时错误
- OpenGL 顶点缓冲区类重定义和模板方法错误
- 从 ObjC 代码调用 .mm 类方法时编译错误
- 接受 lambda 作为参数的类方法 - 错误消息
- 类模板方法的专用化,类型名称是类模板 - 错误:参数处的类型/值不匹配
- 如何在尝试为某些非类型值实例化模板子类方法时产生编译器错误
- 调用子类方法会导致分段错误
- 使用不受支持的类方法时引发编译器错误
- C 类方法声明返回错误
- 调用派生类方法时出现分段错误
- 模板类方法不会导致错误——这是标准的一部分
- std::线程类方法错误
- 基类没有新方法错误
- C++抽象类参数错误解决方法
- C++派生类继承方法错误
- 类方法上的const编译错误
- 在类方法上使用指针:表达式的类型必须为bool错误
- 指向类方法错误c++11的指针数组
- 错误:在类方法声明中无效地使用void表达式