2014-06-09 109 views
0

我正在研究一個涉及套接字和QT的項目。我想從sys/socket.h中使用套接字函數,而不是QT中的套接字函數。 (這是因爲我正在關注一些教程類型的東西)。::什麼都沒有加前綴時是什麼意思?

下面的代碼:通過添加::在連接(),像這樣前

error: no matching function for call to 'MainWindow::connect(int&, const sockaddr*, socklen_t)'

我固定此:

if (::connect(sock, (const struct sockaddr *) &servAddr, (socklen_t) sizeof(servAddr)) < 0){ //connect to server 

if (connect(sock, (const struct sockaddr *) &servAddr, (socklen_t) sizeof(servAddr)) < 0){ //connect to server 

引起以下錯誤據我瞭解,我可以使用::前綴名稱空間,但它在目前的使用意味着什麼?我只發現如何解決我的論壇帖子中的錯誤,但沒有解釋它背後的基本思想。使用::的任何其他技巧。

+1

_global_名稱空間... –

+0

解釋您的問題,在重載解析發生之前,按名稱查找名稱;所以既然你有一個實體'MainWindow :: connect',如果你在MainWindow代碼中編寫'connect',那麼它只能找到'MainWindow :: connect'。當你編寫':: connect'時,它意味着使用全局名稱空間的'connect'。 –

回答