C ++:非関連構造内部クラスのメンバ関数へのポインタ
-
13-09-2019 - |
質問
私はこれについて移動する方法として、オンライン読書のビットをやったと私は私がそれを正しくやっている...私の目標は、Aのメンバー関数へのポインタを含む構造オブジェクトの配列を持つことだと思いますクラスます。
ここで私がこれまで持っているものだ...
typedef void (foo::*HandlerPtr)(...);
class foo
{
public:
void someFunc(...);
// ...
private:
// ...
};
struct STRUCT
{
HandlerPtr handler;
};
STRUCT stuff[]
{
{&foo::someFunc}
};
(私は実際に引数リストを使用するつもりか)または引数なしで、(。もの[0] *ハンドラ)()を使用して関数を呼び出すときにそこで、私は「ハンドラ」を取得:未定義の識別子を...
私はちょうどかわからない、何かが欠けているようになってきました。
解決
あなたへのポインタ変数法を経てsomeFunc()を呼び出すためにfooというオブジェクトのインスタンスを必要とするので、someFunc()は、静的メソッドではない、すなわちます:
foo f;
f.*(stuff[0].handler)();
それともます:
foo f;
HandlerPtr mthd = stuff[0].handler;
f.*mthd();
または、ポインタを使用します:
foo *f = new foo;
f->*(stuff[0].handler)();
delete f;
それともます:
foo *f = new foo;
HandlerPtr mthd = stuff[0].handler;
f->*mthd();
delete f;
所属していません StackOverflow