2014-05-10 106 views
2

所以,我有被定義爲下面的類:名稱與類方法衝突

class Socket { 
public: 
    Socket(); 
    virtual ~Socket(); 

    int open(); 
    void close(); 

private: 
    int mHandle; 
    int mState; 
}; 

然後我實現close()方法爲這樣:

void Socket::close() 
{ 
    if (mHandle!=0) 
     close(mHandle); 
} 

「關閉(mHandle) 「我的close內部是在AFAIK中定義的,它不在任何名稱空間內。

要解決我重新命名接近別的東西,但肯定在一些其他的方式......只要至少一個功能是發現

+3

嘗試'::接近(mHandle);'來強迫在根名字空間裏查找 – jsantander

回答

4

名稱查找結束。

::close(mHandle); 

或者本地申報名稱,以便查找繞過類成員:所以開始尋找在正確的地方,你可以限定名稱

using ::close; 
close(mHandle); 
+0

謝謝!我以前見過這個::符號,但從未停下來思考它到底是什麼意思。 –