【发布时间】:2014-12-02 18:41:26
【问题描述】:
boost signals2 库在其tutorial 中包含以下代码:
struct HelloWorld
{
void operator()() const
{
std::cout << "Hello, World!" << std::endl;
}
};
boost::signals2::signal<void ()> sig;
HelloWorld hello;
sig.connect(hello); (*)
sig();
但是,我无法理解为什么会这样。据我所知,connect 应该得到一个 void() 方法,但它在 (*) 中得到一个 HelloWorld&。为什么这甚至行得通?
【问题讨论】:
-
你读过tutorial吗?此外,请关注每个帖子的一个 问题,并确保这个特定问题很突出。
-
称为函子类。
-
@Zeta 我打赌 OP 应该专注于两者之一。看来他paired down a three-in-one question 进入了一个二合一问题。仍然不完全正确,但是是的。
-
@sehe 感谢您的回答。我正在等到我可以接受它作为答案。现在我有一些东西要开始阅读了。
-
我试图挽救这个问题。我已将您的问题合并为一个问题,这不会使 sehe 或 reymabel 的答案无效。