-1

Linux端末でメニューのような機能を実装する割り当てとしてライブラリを作成する必要があります。したがって、サブメニューごとに、位置を別のサブメニューまたは関数の呼び出しにする必要があります。

そのような呼び出しをどのように実装するのか疑問に思いました。これはライブラリであるため、さまざまな数と種類の引数を使用して、さまざまな種類の関数に使用できます。

それらの関数についてまだ何も想定していない別の関数を呼び出すようなメソッドを実装するにはどうすればよいですか?どういうわけかテンプレートを使用する必要がありますか、それとも別の方法がありますか。または多分私はそれをまったく別の方法で実装する必要がありますか?

4

1 に答える 1

2

これを行うには、仮想メソッドでオブジェクトを使用できます。次に、アプリケーションは、コールバックオブジェクトに配置するパラメータを決定できます。

class MenuItem;

// Callback Interface
struct MenuCallback
{
    virtual void activated(MenuItem* sender) = 0;
    virtual ~MenuCallback(){}
};

// Application Code
struct ConcretMenuCallback: MenuCallback
{
    ConcretMenuCallback(int parameter1);

    void activated(MenuItem* sender)
    {
        // do something with the data stored in this object
    }
};

// Example Item
class MenuItem
{
    MenuItem(MenuItem*parent, std::string caption, MenuCallback* cb);
    void notify();
}

MenuItem::notify()
{
    // call the callback-Object
    if(m_callback)
        m_callback->activated(this);
}
于 2013-01-19T18:42:23.623 に答える