命名空间 boost 中没有名为 asio 的类型
no type named asio in namespace boost
我正在尝试使用 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;
}
您需要这样做:
namespace asio = boost::asio;
using foo =
是针对类型的,命名空间不是类型。
参考:https://en.cppreference.com/w/cpp/language/namespace_alias
我正在尝试使用 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;
}
您需要这样做:
namespace asio = boost::asio;
using foo =
是针对类型的,命名空间不是类型。
参考:https://en.cppreference.com/w/cpp/language/namespace_alias