如何解决静态方法作为方法参数作为lambda
我想让一个类的构造函数将lambda作为参数:
class MyComboBox : public QComboBox
{
public:
explicit MyComboBox( const std::function< QString( Flag ) > &readable,QWidget *parent = nullptr );
};
我在类中有一些标志,也有静态方法:
class QgsField
{
Q_GADGET
public:
enum class ConfigurationFlag : int
{
Searchable = 1 << 1,Readable = 1 << 2,};
Q_ENUM( ConfigurationFlag )
Q_DECLARE_FLAGS( ConfigurationFlags,ConfigurationFlag )
Q_FLAG( ConfigurationFlags )
static QString readableConfigurationFlag( QgsField::ConfigurationFlag flag );
};
我正在尝试构造MyComboBox:
std::function<QString (QgsField::ConfigurationFlag)> readable = [](QgsField::ConfigurationFlag flag) {return QgsField::readableConfigurationFlag(flag);};
QComboBox *cb = new MyComboBox<QgsField::ConfigurationFlag>(readable,parent );
此操作失败:
x86_64体系结构的未定义符号: “ QgsFlagCheckableComboBoxQgsField :: ConfigurationFlag :: QgsFlagCheckableComboBox(std :: __ 1 :: function
&,QWidget *)
- 有没有一种方法可以直接传递静态方法而无需通过lambda(根据定义,基类可以更改)?
- 为什么当前失败?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。