B類繼承自A類.A類具有名爲bind
的虛擬函數。C++中的函數名稱衝突
Class A {
virtual void bind();
}
class B: public A {
B();
}
在B的構造函數,它使用從<sys/socket.h>
bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
功能。
#include <sys/socket.h>
B::B() {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in server_addr, client_addr;
if(sockfd < 0)
perror("ERROR opening socket.\n");
bzero((char*)&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = 2333;
if(bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
perror("ERROR on binding.\n");
listen(sockfd, 1);
}
編譯器拋出錯誤,指出兩個bind
函數衝突。我知道我可以在sys/socket.h
中爲bind
創建包裝。有沒有優雅和簡單的方法來解決衝突?
感謝
你應該嘗試::綁定(的sockfd,(結構sockaddr *)&SERVER_ADDR,的sizeof(SERVER_ADDR)進入全球綁定 –
瞭解更多關於'範圍解析operator' http://en.wikipedia.org/wiki/Scope_resolution_operator – Cyclonecode