C ++ Boost 1.72.0 - 'defer': не является членом 'std :: shared_ptr ' - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь использовать библиотеку ASIO Boost для упрощения работы в сети на Windows для моего проекта, но всякий раз, когда я включаю что-либо, имеющее отношение к std::shared_ptr и boost::asio::ip::tcp::acceptor, я получаю эту ошибку:

'defer': is not a member of 'std::shared_ptr<boost::asio::io_context>'

bool ChatterboxService::Service::open()
{
    context = std::make_shared<boost::asio::io_context>();

    try
    {
        acceptor = std::make_shared<boost::asio::ip::tcp::acceptor>(context, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port));
    }
    catch (boost::system::system_error error)
    {
        std::cerr << error.what() << std::endl;
        return false;
    }

    return true;
}

Я пытался удалить, повторно извлечь и заново скомпилировать всю библиотеку, но это не имело никакого значения. Я уже несколько часов гуглю эту проблему, и, похоже, ни у кого еще не было этой проблемы. Любая помощь очень ценится.

1 Ответ

1 голос
/ 27 апреля 2020

Вы пытаетесь создать акцептор из shared_ptr, вы должны разыменовать его.

try
{
    acceptor = std::make_shared<boost::asio::ip::tcp::acceptor>(*context, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port));
}
...