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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
};