我确实理解如何重载运算符,但显然不完全.
有人可以解释一下该部件的用法
WWindow::operator HWND()
{
// This overloaded operator allows us to use HWND anyway we want
return _hwnd;
}
Run Code Online (Sandbox Code Playgroud)
为了我?
我不明白怎么做
operator HWND(){ ... }
Run Code Online (Sandbox Code Playgroud)
应该工作吗?
这是一个自动转换运算符.一般原型是:
operator TYPE();
Run Code Online (Sandbox Code Playgroud)
也就是说,没有返回类型,因为它必须是您要转换的相同类型.
只要您使用需要WWindow
a的原始对象(类型),就会调用此运算符HWND
.
请注意,通常最好制作转换运算符const
:
operator HWND() const { ... }
Run Code Online (Sandbox Code Playgroud)
但这取决于你想要它与它完全一致.
此外,如果您使用C++ 11,则可以将它们声明为显式:
explicit operator HWND() const { ... }
Run Code Online (Sandbox Code Playgroud)
这样它就不会在任意上下文中自动调用,而只能在少数几个更安全的情况下调用,比如使用static_cast<HWND>(w)
or HWND h(w)
,但不能在DestroyWindow(w)
.