gpt4 book ai didi

c++ - boost::signals2 插槽作为非静态函数成员?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:27 25 4
gpt4 key购买 nike

我最近出于学习目的一直在玩弄 boost::signals2,我想知道我是否可以将信号连接到位于类(就像我在 Qt 中所做的那样)。请考虑以下事项:

class Worker {
typedef boost::signals2::signal<void (const std::string &)> SendMessage;
public:
typedef SendMessage::slot_type SendMessageSlotType;
boost::signals2::connection connect(const SendMessageSlotType &slot) {
return send_message.connect(slot);
}
private:
SendMessage send_message;
};

class Controller {
public:
Controller() {
worker.connect(&Controller::print);
}
private:
static void print(const std::string &message) {
std::cout << message << std::endl;
}

Worker worker;
};

现在我想让 Controller::print 成为一个非静态成员。以 boost::thread 为例,这可以使用 boost::bind 来实现;有没有办法用 boost::signals2 做到这一点?

最佳答案

只是:

class Controller {
public:
Controller() {
worker.connect(boost::bind(&Controller::print, this, _1));
}
private:
void print(const std::string &message) {
std::cout << message << std::endl;
}

Worker worker;
};

关于c++ - boost::signals2 插槽作为非静态函数成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10002283/

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