1

オブジェクト指向の関数ポインターを C++ で実装したいと考えています (C# のデリゲートに相当)。

最終クラスのプレースホルダーとして「MagicFunctionPainter」を使用するサンプル コードを作成しました。

class A
{
public: 
    MagicFunctionPointer p;
    void fireEvent()
    {
         p();
    }
};

class B
{
public:
    void init(A* a)
    {
        a->p = &onEvent;
    }
    void onEvent()
    {
        // in a real-world app, it'd modify class variables, call other functions, ...
    }
};

std::function または Boost::Signals2 はそれをサポートしていますか? そのケースをサポートする他のライブラリはありますか?

前もって感謝します!

4

2 に答える 2

2

のタイプはp次のとおりです。

std::function<void(void)> // a function taking no arguments, returning nothing

このタイプのオブジェクトを次のように作成しますB::init

std::bind(&B::onEvent, this);
于 2014-12-03T08:46:33.213 に答える
0

それをバインドする必要があります:

 boost::bind(&ClassX::member_function, boost::ref(instance))
于 2014-12-03T08:41:17.760 に答える