C++ boost::asio bad_weak_ptr при использованииshared_from_this ⇐ C++
-
Гость
C++ boost::asio bad_weak_ptr при использованииshared_from_this
Я создаю асинхронный сервер сокетов, используя boost::asio, и у меня возникли проблемы с указателями.
SocketServer.hpp
#pragma один раз #include #include #include "SocketConnection.hpp" #define SOCKET_PORT 8080 #define BOOST_ASIO_ENABLE_HANDLER_TRACKING 1 // Включить отслеживание класс SocketServer: public std::enable_shared_from_this { частный: boost::asio::io_context _ioc; boost::asio::ip::tcp::acceptor* _acceptor; std::vector _registered; станд::мьютекс _мьютекс; публика: СокетСервер(); ~SocketServer(); недействительный Accept_loop(); void Register_connection (соединение std::weak_ptr); void Broadcast (std::string const &msg); недействительный запуск(); }; SocketServer.cpp
#include #include #include #include #include #include #include #include #include "SocketServer.hpp" СокетСервер::SocketServer() { _acceptor = новый boost::asio::ip::tcp::acceptor(_ioc, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), SOCKET_PORT )); принять_цикл(); } СокетСервер::~СокетСервер() { std::cout
Я создаю асинхронный сервер сокетов, используя boost::asio, и у меня возникли проблемы с указателями.
SocketServer.hpp
#pragma один раз #include #include #include "SocketConnection.hpp" #define SOCKET_PORT 8080 #define BOOST_ASIO_ENABLE_HANDLER_TRACKING 1 // Включить отслеживание класс SocketServer: public std::enable_shared_from_this { частный: boost::asio::io_context _ioc; boost::asio::ip::tcp::acceptor* _acceptor; std::vector _registered; станд::мьютекс _мьютекс; публика: СокетСервер(); ~SocketServer(); недействительный Accept_loop(); void Register_connection (соединение std::weak_ptr); void Broadcast (std::string const &msg); недействительный запуск(); }; SocketServer.cpp
#include #include #include #include #include #include #include #include #include "SocketServer.hpp" СокетСервер::SocketServer() { _acceptor = новый boost::asio::ip::tcp::acceptor(_ioc, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), SOCKET_PORT )); принять_цикл(); } СокетСервер::~СокетСервер() { std::cout
Мобильная версия