2011-07-15 20 views
0

私がここで間違っていることを誰でも分かることができますか? 1.47のドキュメントによると、basic_datagram_socketはbasic_socketから継承するので、non_blocking()またはnon_blocking(bool)を継承する必要があります。 おかげboost 1.47 non_blocking()でコンパイルエラー

エラー1つのエラーC2039: 'non_blocking': '後押し:: ASIO :: basic_datagram_socket C' のメンバーではありません:\ DEV \プロジェクト\ topoTest \ topoTest \ multiReceiver.cppは129

これは、呼び出し。 socket_.non_blocking(true);

とクラス内で次のようにソケットが定義されています

ブースト:: ASIO :: IP :: UDP ::ソケットsocket_。

+0

この問題を再現するために使用するコード全体を投稿してください。投稿した制限付きコードに間違いがありません。 –

答えて

2

メンバー関数boost::asio::ip::udp::socket::non_blocking()は、1.47に新しく追加されたようです。実際には1.47に存在しないか、実際に古いヘッダーを使用しています。私はそれがbasic_datagram_socketクラスの一部としてそのメンバ関数を実際に持っているかどうかを調べるためにインクルードされている<boost/asio/basic_datagram_socket.hpp>ヘッダを見つけることを提案したいと思います。もしそうでなければ、あなたはいつもスティーブ・タウンゼントが彼の答えで言ったようにそれを行うことができます。

ブースト1.47をダウンロードしたところ、basic_datagram_socketnon_blocking()basic_socketから継承しています。ブースト1.47を実際に持っていないように見えます。

+0

ショーン、あなたの答えが正しい方向に私を設定してくれてありがとう。私は1.47を持っていますが、私は何とかインクルードパスの1.47リファレンスよりも先行していた1.46への参照を削除しませんでした。だから私は今、async_receive_fromからすぐに戻ることができると思っていましたが、would_blockエラーで読み込むことはできませんでしたが、async_receive_fromブロックは返されるデータグラムがなくなるまでブロックされました。本当。だから私はこの時点でちょっと困ります。さらに分析します。 –

+0

@Al 'async_receive_from'は常にすぐに戻ります。他の動作に遭遇している可能性があります。新しい質問をすることをお勧めします。 –

関連する問題