2011-07-15 71 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中,要麼實際上使用較舊的標題。我建議找到包含<boost/asio/basic_datagram_socket.hpp>的標題,看它是否實際上具有該成員函數作爲basic_datagram_socket類的一部分。如果沒有,你可以像史蒂夫湯森德在他的回答中所說的那樣以舊的方式去做。

我剛剛下載了Boost 1.47,發現basic_datagram_socketbasic_socket繼承non_blocking()。它看起來像你實際上沒有提升1.47。

+0

肖恩,謝謝你的回答,讓我朝着正確的方向前進。我確實有1.47,但我不知道如何刪除在1.46參考之前的1.46引用。因此,其原因是1.47我認爲現在可以立即從async_receive_from返回,如果沒有用would_block錯誤讀取,但是到目前爲止async_receive_from塊直到有數據報返回,即使將non_blocking設置爲真正。所以我有點在這一點上難倒。將進一步分析。 –

+0

@Al'async_receive_from'總是立即返回,您可能遇到其他行爲。我建議問一個新問題。 –