【发布时间】:2020-12-15 15:13:22
【问题描述】:
我的任务是将 boost 库的版本更改为更新版本,但我遇到了 Boost::asio::serial_port 的问题。现在代码如下所示:
port_.get_io_service().run();
其中 port_ 是类私有变量,它的初始化如下:
boost::asio::serial_port port_{io_service_};
我正在更改为 1.7.1 版本,并且我一直在阅读有关 get_io_service() 函数已删除的文档,我应该使用 io_context 而不是 io_service。问题是没有函数get_io_context()。 我一直在阅读其他帖子中的一些答案并试图获得解决方案,但它没有奏效。我试过了:
port_.get_executor().context().run();
port_.get_executor().run();
它会产生错误:
error: ‘class boost::asio::execution_context’ has no member named ‘run’
error: ‘boost::asio::basic_serial_port<>::executor_type’ {aka ‘class boost::asio::executor’} has no member named ‘run’
像这样的代码起作用了,但它是一种解决方法,必须有更简单的方法来做到这一点:
boost::asio::io_context& io_context =
static_cast<boost::asio::io_context&>(port_.get_executor().context());
io_context.run();
有什么想法吗?
【问题讨论】:
标签: c++ boost boost-asio