gpt4 book ai didi

c - 如何解析同名的 C++ 成员函数与 C 函数?

转载 作者:太空宇宙 更新时间:2023-11-04 05:07:58 25 4
gpt4 key购买 nike

我在 server.h 中有一个服务器类:

namespace tcp{

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

class Server{
private:
int listener; //socket fd
public:
/* ...... */
void run();
int listen();
/* ...... */
}
}

在 server.cpp 中:

usinge namespace tcp;

void Server::run(){
/* ...do something to get socket for listening...*/
listen();
/* ...do something else...*/
}

int Server::listen(){
if (listen(listener, 10) == -1){
perror("listen");
exit(3)
}
}

编译器无法区分 Server::listen() 调用和 listen() 系统调用。我的解决方案是将 #include 指令包装在命名空间 std 中。但是,我不确定如果其他文件包含那些系统头文件或其他一些问题是否会发生冲突。除了改名还有什么建议吗?

最佳答案

在 C 版本前加上 ::

if (::listen(listener, 10) == -1) {
...
}

即使用全局命名空间。

关于c - 如何解析同名的 C++ 成员函数与 C 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8445251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com