클래스 B는 클래스 A로부터 상속받습니다. 클래스 A에는 bind
이라는 가상 함수가 있습니다. B의 생성자에서 C에서 함수 이름이 충돌 함
Class A {
virtual void bind();
}
class B: public A {
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
기능 충돌을 말하는 오류가 발생합니다. bind
에 대한 래퍼를 sys/socket.h
에 만들 수 있다는 것을 알고 있습니다. 갈등을 해결할 수있는 우아하고 쉬운 방법이 있습니까?
감사
당신은 시도해야 :: 바인드 (sockfd와, (구조체 SOCKADDR의 *) SERVER_ADDR,를 sizeof (SERVER_ADDR를) –
이 http://en.wikipedia.org/wiki/Scope_resolution_operator – Cyclonecode