【问题标题】:no type named asio in namespace boost命名空间提升中没有名为 asio 的类型
【发布时间】:2021-07-30 23:31:13
【问题描述】:

我正在尝试使用boost::asio 编写异步 TCP 服务器。 using Tcp = boost::asio::ip::tcp 指令工作正常。但是,如果我定义

using Asio = boost::asio 它似乎不起作用。我收到错误no type named asio in namespace boost。这是为什么呢?

这是为什么呢?

#include <iostream>
#include <boost/asio.hpp>
#include <boost/optional.hpp>

using namespace  std;

using Tcp = boost::asio::ip::tcp;

class session{
public:
    session(Tcp::socket &&socket)
        : m_socket(std::move(socket))
    {

    }

    void async_read(){

    }
private:
    Tcp::socket  m_socket;
    boost::asio::streambuf m_streambuf;

};



class server{

public:
    server(boost::asio::io_context &io_context, std::uint16_t port)
    : io_context(io_context)
    , m_acceptor(io_context, Tcp::endpoint(Tcp::v4(), port))
    {

    }

    void async_accept() {

    }


private:
    boost::asio::io_context& io_context;
    Tcp::acceptor m_acceptor;
    boost::optional<Tcp::socket>  m_socket;
};






int main()
{
    return 0;
}

【问题讨论】:

    标签: c++ boost boost-asio asio


    【解决方案1】:

    你需要这样做:

    namespace asio = boost::asio;
    

    using foo = 用于类型,命名空间不是类型。

    参考:https://en.cppreference.com/w/cpp/language/namespace_alias

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 2014-09-21
      • 2014-12-21
      相关资源
      最近更新 更多