Может ли кто-нибудь объяснить, как работает этот пример общего_ptr? [закрыто]C++

Программы на C++. Форум разработчиков
Anonymous
Может ли кто-нибудь объяснить, как работает этот пример общего_ptr? [закрыто]

Сообщение Anonymous »

Я пытаюсь понять, как работает этот пример Chat_server из документации boost::asio.
У меня есть такой обработчик для async_accept:

Код: Выделить всё

void chat_server::do_accept()
{
acceptor_.async_accept(
[this](boost::system::error_code ec, tcp::socket socket)
{
if (!ec)
{
std::make_shared(std::move(socket), room_)->start(); //????
}
std::cout start();
Насколько я понимаю, он создает анонимный общий указатель на классchat_session, перемещает в него полученный сокет и добавляет ссылку на room_ , а это означает, что при запуске функции start()?
  • Как мне переписать этот код в большем количестве строк? Например:

Код: Выделить всё

chat_session A(std::move(socket), room_); // create class
std::make_shared(A);
A->start()
  • Как я понимаю из Basic_socket_acceptor::async_accept, мне нужно создать для себя сокет и добавить его в акцептор. Но в этой функции она создает для себя акцептор?
Я пытаюсь понять, как работает эта функция.

Подробнее здесь: https://stackoverflow.com/questions/786 ... mple-works

Вернуться в «C++»