gpt4 book ai didi

c++ - 官方 libsigc++ 2.0 示例中的错误?

转载 作者:行者123 更新时间:2023-11-30 04:09:46 25 4
gpt4 key购买 nike

我正在关注 libsigc++-2.0 的官方文档,我发现了 this example :

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() 和类的构造函数,无论如何我都看不到库的效果,显然信号不起作用当在 main 中调用 run 时,不会激活任何插槽。

我在这里忘记了什么?这个东西应该如何重写?

最佳答案

文档似乎不完整。

最基本的代码版本应该是这样的:

AlienDetector::AlienDetector() {}

void AlienDetector::run() {
sleep(3); // wait for aliens
signal_detected.emit(); // panic
}

我发布了一个功能齐全的基于 make 的示例 on github , example1.cpp 是第一个例子, example2.cpp 是一个使用成员函数的例子。

关于c++ - 官方 libsigc++ 2.0 示例中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20953838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com