2017-10-16 19 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 <空(のconstはFoo&)> m_operationsVector;' 'm_operationsVector.push_back(&Fooの:: processSetBlindStateRequest);' –

+0

_vectorが持つメソッドのポインタを格納する必要がありますさまざまな戻り値と署名_そして、どのようにそれらを呼び出すかを決めるのですか? –

+0

シグナル/スロットを使用すると思われましたか? –

答えて

1

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

第二にC++ 11にはstd::functionとラムダを使用する方が便利です:

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

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

第3にこれがJSonと組み合わされると、これは疑わしいようです。何してるの?これはXY Problemのように見えます。

関連する問題