質問

私はこれについて移動する方法として、オンライン読書のビットをやったと私は私がそれを正しくやっている...私の目標は、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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top