2014-06-09 108 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'。 –

回答