Boost logo

Boost Users :

Subject: Re: [Boost-users] boost::asio socket as class member
From: The Novice Coder (boost_at_[hidden])
Date: 2010-11-17 20:36:17


Claude wrote:
> Hi!
>
> I want to put a boost::asio::ip::tcp::socket as a private member of my class
> and then create the object in one of the class methods.
>
> I actually use this code:
>
> class myClass{
>
> private:
> boost::asio::io_service io_service;
> boost::asio::ip::tcp::socket s;
> };
>
>
>
> But this code don't work (don't compile). Why?
>
Wow, one I can answer..
Anyways, I suspect the compile error you're getting is "No default
constructor available". The problem is just that, Socket doesn't have
an "empty" constructor.

The Socket constructor needs an boost::asio::io_service object to work.

You can fix your code by adding a constructor that does the
initialization, like so:

class myClass{
  public:
   myClass() : s(io_service) {}

  private:
   boost::asio::io_service io_service;
   boost::asio::ip::tcp::socket s;
};

Hope that helps!


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net