socket不能用作函数

gee*_*n92 0 c++ udp winsock2

嗨,我已经完成了Java和C#,并且最近在Linux环境中使用C/C++编写了一个模块.我已决定在Windows中用C++创建一个简单的UDP服务器,我也是新手,但在编码方面并不是一个完整的新手.我看了一些例子,这一切似乎与这一行不同:

SOCKET socket = socket(AF_INET, SOCK_DGRAM, 0);
Run Code Online (Sandbox Code Playgroud)

当我在Netbeans中编译它时,它会出现以下错误消息:

classUDPServer.cpp: In constructor 'UDPServer::UDPServer()':
classUDPServer.cpp:35: error: '((UDPServer*)this)->UDPServer::socket' cannot be used as a function
    make[2]: *** [build/Debug/MinGW-Windows/classUDPServer.o] Error 1
    make[1]: *** [.build-conf] Error 2
    make: *** [.build-impl] Error 2
Run Code Online (Sandbox Code Playgroud)

我同时包含winsock2.h和iostream.

任何人都可以帮我解决这个错误吗?

提前致谢!

mfo*_*ini 5

不要以与函数相同的方式命名变量.

SOCKET my_socket = socket(AF_INET, SOCK_DGRAM, 0);
Run Code Online (Sandbox Code Playgroud)

此外,正如@chris指出的那样,您可以使用范围解析运算符(::),以便socket在全局命名空间中查找该函数:

SOCKET socket = ::socket(AF_INET, SOCK_DGRAM, 0);
Run Code Online (Sandbox Code Playgroud)

  • 我想指出这只是一个范围问题.使用`SOCKET socket = :: socket(AF_INET,SOCK_DGRAM,0);`将正常工作并允许使用所需的变量名. (2认同)