在一个项目中,我们希望以某种方式包装 Boost Asio 套接字,使用类或包装 .h 不必包含 boost 标头。
我们通常对包装类使用指针和前向声明。
转发声明:
namespace boost
{
namespace asio
{
namespace ip
{
class udp;
}
}
}
然后声明套接字:
scoped_ptr<boost::asio::ip::udp::socket> socket_;
scoped_ptr<boost::asio::ip::udp::endpoint> receiveEp_;
(如果你不知道 scoped_ptr,忽略它,问题等同于标准 * 指针。)
但这会产生编译器错误:
error C2027: use of undefined type 'boost::asio::ip::udp'
我理解这是因为 udp 实际上不是命名空间,而是一个类本身。我们只想使用内部类,有什么想法吗?