в проекте мы хотим обернуть сокет Boost Asio таким образом, чтобы класс using или оболочка .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 на самом деле не пространство имен, а сам класс. Мы хотим использовать только внутренний класс, есть идеи?