Bonjour !
J'ai deux problèmes de compilations sur le tutoriel de Boost.Asio et j'aimerais bien en voir le boût.
D'abord, un problème avec la fonction boost : je me mange une erreur qui me dit que "'bind' is not a member of 'boost'".
Soit je tape "boost::bind" et dans ce cas, j'ai droit à cette erreur.
Soit je tape bind tout court, et dans ce cas il comprend naturellement que je parle de la fonction bind tiré de socket.h !
Le deuxième problème de compilation vient de cette ligne :
class tcp_connection : public boost::enable_shared_from_this<tcp_connection>
On me dit alors :
server.cpp: error: invalid use of incomplete type ‘struct boost::enable_shared_from_this<tcp_connection>’
Pourquoi diable ?
Voici le code de ma classe (à deux vache près sans doute le même que sur le tutoriel).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include <iostream>
#include <string>
#include <boost/asio.hpp>
#include <boost/array.hpp>
using namespace boost;
using namespace asio;
using namespace ip;
class tcp_connection : public boost::enable_shared_from_this<tcp_connection>
{
public:
typedef shared_ptr<tcp_connection> pointer;
static pointer create(io_service &ios)
{
return pointer(new tcp_connection(ios));
}
tcp_connection(io_service& ios) : m_socket(ios) { }
tcp::socket& socket(void)
{
return m_socket;
}
void start(void)
{
async_write(m_socket, buffer("Ouste ! Sors d'ici !\n"),
boost::bind(&tcp_connection::handle_write, this, placeholders::error);
}
protected:
void handle_write(const system::error_code& errors)
{
if (!errors)
{
return ;
}
std::cout << "Erreur Fatale !\n" << std::endl;
}
private:
tcp::socket m_socket;
}; |
Partager