我正在关注官方文档,libsigc++-2.0
并找到了这个示例:
class AlienDetector
{
public:
AlienDetector();
void run();
sigc::signal<void> signal_detected;
};
void warn_people()
{
cout << "There are aliens in the carpark!" << endl;
}
int main()
{
AlienDetector mydetector;
mydetector.signal_detected.connect( sigc::ptr_fun(warn_people) );
mydetector.run();
return 0;
}
正如您所看到的,该类的run()
函数和构造函数AlienDetector
都没有定义,因此这段代码不应该编译(但文档认为这段代码可以工作是理所当然的)。
更奇怪的是,如果我同时定义run()
了类的构造函数和构造函数,无论如何我都看不到库的效果,显然信号不起作用,并且run
在 no slot 中调用时main
被激活。
我在这里忘记了什么?这东西应该怎么改写?