Search code examples
c++scopescope-resolution

How to call function with same name as class member


How can I call non-member function listen() (included from sys/socket.h) from a class which defines a member function with the same name listen()?

#include <sys/socket.h>

void Socket::listen(int port)
{
    ...

    listen(sock_fd, 10); // this doesn't work
}

Solution

  • Use the scope resolution operator ::.

    void Socket::listen(int port){
        //...
        ::listen(sock_fd, 10);
        ^^
    }
    

    The scope resolution operator :: is used to identify and disambiguate identifiers used in different scopes.