в проекте мы хотим обернуть сокет Boost Asio таким образом, чтобы класс using или обертка .h не включали заголовки boost.
Обычно мы используем указатели и форвардные объявления для обернутых классов.
Заявление Foward:
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 на самом деле не пространство имен, а сам класс. Мы хотим использовать только внутренний класс, есть идеи?