überladene function unter VS c++ 2005



  • hab hier ne socket klasse:

    class Socket
    {
       /* .. */
       public:
       long Bind(const SOCKADDR *name, int size);
       virtual long Bind(unsigned short port);
       virtual long Bind(unsigned long addr, unsigned short port);
       /* .. */
    };
    

    und dann ne

    class TcpSocket : public Socket
    {
       /* .. */
       public:
       virtual long Bind(unsigned short port);
       virtual long Bind(unsigned long addr, unsigned short port);
       /* .. */
    };
    

    so

    jetzt versuch ich folgendes

    TcpSocket *s = new TcpSocket();
    if(s->Bind((const SOCKADDR *)&addr, sizeof(addr)) < 0) /* */
    

    und bekomme:

    long TcpSocket::Bind(unsigned long,unsigned short)' : cannot convert parameter 1 from 'SOCKADDR *' to 'unsigned long'

    😮

    ich kann aber folgendes tun

    TcpSocket *s = new TcpSocket();
    if(s->Socket::Bind((const SOCKADDR *)&addr, sizeof(addr)) < 0) /* */
    

    seit wann ist das so?
    hab ich da was verpasst?



  • habs gefunden;

    class TcpSocket : public Socket
    {
       /* .. */
       public:
    
       using Socket::Bind;
    
       virtual long Bind(unsigned short port);
       virtual long Bind(unsigned long addr, unsigned short port);
       /* .. */
    };
    

    war mir echt neu, obwohl ich nun schon jahre c++ programmiere.


Anmelden zum Antworten