2014-05-12 19 views
1

我明白如何重載操作符,但顯然不完全。WWindow :: operator HWND(){return _hwnd; }

是否有人可以解釋該部分

WWindow::operator HWND() 
{ 
    // This overloaded operator allows us to use HWND anyway we want 
    return _hwnd; 
} 

對我的使用情況如何?

我不明白

operator HWND(){ ... } 

如何應該工作?

+1

您可以將'Window'實例傳遞給接受'HWND'參數的任何函數。 –

回答

6

這是一個自動轉換操作符。一般原型是:

operator TYPE(); 

也就是說,沒有返回類型,因爲它必須是您要轉換的相同類型。

,只要您使用其中需要HWND你原來的對象(類型WWindow)該經營者將被調用。

注意,它通常是一個好主意,使轉換操作符const

operator HWND() const { ... } 

但是這取決於你想它正是用它做什麼。

另外,如果您使用C++ 11,你可以聲明爲明確:

explicit operator HWND() const { ... } 

,以便它不會自動在任意環境中調用,但只在少數,更安全的情況下,這樣的與static_cast<HWND>(w)HWND h(w)一樣,但不在DestroyWindow(w)中。