0

インターフェイスを使用して子クラスのメソッドを呼び出したいのですが、インターフェイス メソッドへのポインターを使用したいと考えています。

このようなもの:

#include <iostream>

using namespace std;


class IA
{
    public:
    virtual void f() = 0;
};

class A : public IA
{
    public:

    virtual void f()
    {
        cout<<"A::f()"<<endl;
    }   
};

int main()
{   
    typedef void (IA::*Func)();

    Func func;
    func = &IA::f;

    IA *a = new A();

    a.*(func);

    delete a;

    return 0;
}

これを解決する方法を知っていますか?

4

1 に答える 1

3

呼び出しは次のようにする必要があります。

(a->*func)()

(これにより、メンバー関数ポインターがバインドされ、メンバー関数aが呼び出されます。)

それ以外の場合、コードは正しいです。

于 2012-07-24T21:45:55.703 に答える