请大家帮我看看下面的问题:m_hWxWnd是一个HWND的公有变量。
在同一个函数里给m_hWxWnd赋值并接着使用是对的;如果赋值后在紧接着的子函数调用就出错了。-----------程序里面这样做是对的------------
...
HWND m_hRxWnd=pView->GetSafeHwnd();
Func(m_test,m_hRxWnd);
...
-----------现在这样改,就不行了-------------
...
HWND m_hRxWnd=pView->GetSafeHwnd();
SubFunc();
...
SubFunc的定义:
void SubFunc(void)
{
Func(m_test,m_hRxWnd);
}-----------除非改成这样,由可以了:----------
...
HWND temp=pView->GetSafeHwnd();
SubFunc(temp);
...
void SubFunc(HWND hWnd)
{
Func(m_test,hWnd);
}为什么会出现以上的问题呢?m_hRxWnd作为一个类的公有变量应该在类的任何地方用都可以才对。!?
=================================================
注意!!!这里的m_hRxWnd是一个与成员变量同名的临时变量。
所以SubFunc(void)里面的m_hRxWnd与你定义的HWND m_hRxWnd临时变量并不是同一个东西。
{
Func(m_test,m_hRxWnd);
}
这个里面的m_hRxWnd是成员变量。HWND m_hRxWnd这是个局部变量。。同名。域不同。在名字解析期间查找域的顺序由内向外,所以在外围域中的声明被嵌套域中的同名声明所隐藏。