2017-06-10 6 views
1

クラス内にwinsock2をカプセル化しようとしていますが、これは明らかにwinsock2.hのbind関数に衝突するbindというメンバ関数です。クラスメソッドとグローバル関数のエイリアス

class foo { 
public: 
    void bind(); 
    void some_function() { 
    bind(_sockfd, p->ai_addr, p->ai_addrlen); //error... compiler actually calls foo::bind() instead of the global bind function. 
    } 

private: 
    ... 
} 

解決方法はありますか? (名前変更foo::bind()のほかに)。

+6

':: bind(....)'。 – songyuanyao

+0

@songyuanyaoあなたはそれを答えに変換する必要があります! – Curious

+0

少し関連:https://stackoverflow.com/questions/39423474/socket-binding-wont-return-an-int – stijn

答えて

1

必要な機能がマクロではない場合は、完全に修飾することができます。

class base { 
     int bind(...); 
} 

class derived : public base { 
     int bind(...); 
     int someFunction(); 
} 


int derived::someFunction() 
{ 
     base::bind(); // call base class's implementation. 
     bind(); // call derived::bind(); 
     ::bind(); // call global function. 
} 
関連する問題