2017-10-16 68 views
0

如何創建指向類方法的指針向量?我有我的向量類的成員(與不同的返回值和簽名的方法,載體必須存儲指針):指向類方法的向量向量QT

QVector<void(*)()> m_operationsVector; 

然後,我有例如類的方法:

QString sampleMethod(QJsonObject &jsonObject, QString delim); 

而且我嘗試添加的指針,這種方法載體:

m_operationsVector.push_back(sampleMethod); 

但不幸的是在加入這個指針矢量我得到這個錯誤:

error: invalid use of non-static member function 

我該如何解決這個問題?

+0

如果foo是你的類,那麼你可以嘗試如下: 'QVector <無效(常量美孚&)> m_operationsVector;'' m_operationsVector.push_back(美孚:: processSetBlindStateRequest);' –

+0

_Vector必須存儲與方法指針不同的回報值和簽名_以及您如何決定如何給他們打電話? – 2017-10-16 21:21:10

+0

您是否考慮過使用信號/插槽? – 2017-10-16 21:22:09

回答

1

所有指針類方法的第一個是不同的定義,所以這種載體應是這樣的:

QVector<void (A::*)()> m_operationsVector; 
在C++ 11更方便的使用和 std::function lambda表達式

其次:

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

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

第三,當這與JSon結合時,這看起來很可疑。你在做什麼?這看起來像XY Problem