如何创建指向类方法的指针的矢量?我将我的vector作为类的成员(vector必须存储具有不同返回值和签名的方法的指针):

QVector<void(*)()> m_operationsVector;


然后我有示例类的方法:

QString sampleMethod(QJsonObject &jsonObject, QString delim);


我试图将指向此方法的指针添加到矢量:

m_operationsVector.push_back(sampleMethod);


但是不幸的是,在将此指针添加到vector的过程中,我遇到了以下错误:

error: invalid use of non-static member function


如何解决此问题?

最佳答案

首先,指向类方法的指针的定义有所不同,因此此向量应如下所示:

QVector<void (A::*)()> m_operationsVector;


其次,在C ++ 11中,使用std::function和lambdas更方便:

QVector<std::function<void()>> m_operationsVector;

operationsVector.push_back([this]() { this->someMethod(); });


第三,当它与JSon结合使用时,这看起来很可疑。你在做什么?看起来像XY Problem

关于c++ - 指向类方法QT的指针 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46779118/

10-11 22:11
查看更多