プロジェクトでは、使用クラスまたはラッピング .h にブースト ヘッダーを含める必要がないように、Boost Asio ソケットをラップしたいと考えています。
通常、ラップされたクラスにはポインターと前方宣言を使用します。
前方宣言:
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 が実際には名前空間ではなく、クラス自体であるためだと理解しています。ただし、内部クラスのみを使用したいのですが、何かアイデアはありますか?