C++ 将boost::信号作为boost::函数传递

C++ 将boost::信号作为boost::函数传递,c++,boost,boost-signals,C++,Boost,Boost Signals,我有一个类,它的信号成员用boost::function封装 是否可以使用此API添加另一个信号作为处理程序 class Foo { public: VOID AddHandler(boost::function<VOID()> handler) { m_signal.connect(handler); } private: boost::signal<VOID()> m_signal; }; boost::signal<VOID()&

我有一个类,它的信号成员用boost::function封装

是否可以使用此API添加另一个信号作为处理程序

class Foo
{
public:
  VOID AddHandler(boost::function<VOID()> handler)
  {
     m_signal.connect(handler);
  }

private:
  boost::signal<VOID()> m_signal;
};

boost::signal<VOID()> signal;

VOID SignalCaller()
{
    signal();
}

int main( )
{ 
   Foo foo;
   //foo.AddHandler(signal); // I want to
   foo.AddHandler(&SignalCaller); // I have to
}
class-Foo
{
公众:
VOID AddHandler(boost::函数处理程序)
{
m_信号连接(处理器);
}
私人:
boost::信号m_信号;
};
boost::信号;
VOID SignalCaller()
{
信号();
}
int main()
{ 
富富,;
//foo.AddHandler(信号);//我想
foo.AddHandler(&SignalCaller);//我必须
}
使用信号类型中声明的类型“插槽类型”

class Foo
{
public:
    typedef boost::signal0<void> Signal;
    typedef Signal::slot_type Slot;

    //allowed any handler type which is convertible to Slot
    void AddHandler(Slot handler)
    {
        m_signal.connect(handler);
    }
private:
  Signal m_signal;
};

void f()
{
    std::cout << "f() called";
}

//usage
    Foo foo;
    foo.AddHandler(signal);
    foo.AddHandler(&f);
class-Foo
{
公众:
类型DEF增压::信号0信号;
typedef信号::槽\ U型槽;
//允许任何可转换为插槽的处理程序类型
void AddHandler(插槽处理程序)
{
m_信号连接(处理器);
}
私人:
信号m_信号;
};
void f()
{
标准::cout