2
我試圖把this boost-asio server到一個類和我這一個誤差試圖編譯,C++:BOOST綁定錯誤:用於調用「結合(<懸而未決重載函數類型>沒有匹配的函數,...
?C:\Documents and Settings\tcpip_server\TCPIP_server.h||In member function 'void TCPIP_server::server(boost::asio::io_service&, short int)':|
C:\Documents and Settings\tcpip_server\TCPIP_server.h|56|error: no matching function for call to 'bind(<unresolved overloaded function type>, boost::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >&)'|
c:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\bind\bind.hpp|1472|note: candidates are: boost::_bi::bind_t<boost::_bi::unspecified, F, typename boost::_bi::list_av_1<A1>::type> boost::bind(F, A1) [with F = void (TCPIP_server::*)(boost::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >), A1 = boost::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >]|
c:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\..\include\boost\bind\bind.hpp|1728|note: boost::_bi::bind_t<typename boost::_bi::dm_result<M T::*, A1>::type, boost::_mfi::dm<M, T>, typename boost::_bi::list_av_1<A1>::type> boost::bind(M T::*, A1) [with A1 = boost::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >, M = void(boost::shared_ptr<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> > >), T = TCPIP_server]|
||=== Build finished: 1 errors, 3 warnings ===|
我知道我應該以某種方式投類型的session
功能,但沒有歧義,因爲只有一個void
功能的存在。我沒有檢查this thread但我仍然被錯誤混淆。繼承人的代碼。
main.cpp
#include "TCPIP_server.h"
int main()
{
return 0;
}
TCPIP_server.h
'session'的第一個參數是'TCPIP_server *',而不是'socket_ptr'。 – chris
正如克里斯所說,你正試圖綁定到一個* member *函數,它需要一個隱式的'this'參數。這裏有一個可能導致正確方向的鏈接:http://stackoverflow.com/a/2304211/368896 –