我對C++相當陌生,而且我很可能在我的腦海中,但事情就是這樣。與Boost一起使用Winsock bind()調用時出現「無法推論出模板參數」錯誤
我正在使用一個相當大的Win32 C++項目,它使用Winsock進行網絡通信。我正在嘗試將一些線程管理轉換爲boost,但是一旦我添加了對boost庫的引用,而不是,我在這行代碼中遇到了大約30個錯誤:
bind(mLocalSocketFd, (struct sockaddr *) &localServerAddress, sizeof(localServerAddress));
這些錯誤包括像:
error C2602: 'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>::_Type' is not a member of a base class of 'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>'
error C2868: 'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>::_Type' : illegal syntax for using-declaration; expected qualified-name
error C2784: 'bool std::operator <(const std::vector<_Ty,_Ax> &,const std::vector<_Ty,_Ax> &)' : could not deduce template argument for 'const std::vector<_Ty,_Ax> &' from 'std::tr1::_Bind_fty<_Fty,_Ret,_BindN>'
error C2784: 'bool std::operator <(const std::vector<_Ty,_Ax> &,const std::vector<_Ty,_Ax> &)' : could not deduce template argument for 'const std::vector<_Ty,_Ax> &' from 'std::tr1::_Bind_fty<_Fty,_Ret,_BindN>'
我猜想,不知怎的,我已經成功地告訴這個特殊的文件(「NetServer.cpp」)使用綁定()的增壓版本,但對於我的生活,我無法弄清楚發生了什麼。我使用boost的唯一部分是boost/thread.hpp,並且我沒有使用NetServer.cpp中的任何地方或者它鏈接到的頭文件來進行任何命名空間。
任何有關我在做什麼錯的建議,或者如何解決它?這顯然是一些愚蠢的新手,但我無法弄清楚。
我不是「使用命名空間增強;」我可以找到標題層次結構中的任何位置,這就是讓我困惑的原因。我仍然不確定它爲什麼試圖在該特定文件中使用boost命名空間。但我不知道::作爲一個全局命名空間限定符。添加解決了這個問題。謝謝。 – 2010-03-17 16:03:58