boost.asio测试问题

时间:2011-04-13 14:57:08

标签: c++ windows-xp boost-asio

我是关于boost.asio的新手。 当我尝试一个简单的例子时,我遇到了一个问题。

在我的头文件中我有:

#include <boost/asio.hpp>
#include "boost/bind.hpp"
#include "boost/date_time/posix_time/posix_time_types.hpp"

我需要这个私有变量:

boost::asio::ip::udp::socket socket_;

我在编译时遇到这个错误:

error C2512: 'boost::asio::basic_datagram_socket<Protocol>' : no appropriate default constructor available
        with
        [
            Protocol=boost::asio::ip::udp

2 个答案:

答案 0 :(得分:4)

found here的所有UDP套接字构造函数的列表。如您所见,您必须至少提供对boost::asio::io_service对象的引用。

如果这是一个私有变量,请在类构造函数的初始化列表中提供此引用。以下将编译:

#include <boost/asio.hpp>
class Socket
{
    boost::asio::ip::udp::socket socket_;
 public:
    Socket( boost::asio::io_service& ioserv) : socket_(ioserv) {}
};
int main()
{
    boost::asio::io_service io;
    Socket s(io);
}

答案 1 :(得分:1)

我使用了boost :: asio,我遇到了类似的问题。

你需要创建一个带有io_service对象的构造函数,并用io_service初始化你的socket_。

像这样:

tcp_connection::tcp_connection(boost::asio::io_service& io_service) : socket_(io_service) {}