如何解决类的私有变量成员即使分配了值也会显示垃圾数据
我有一个私有整数p
,其初始值为0,并具有函数foo
对其进行处理。
class C
{
public:
C();
private:
unsigned int p = 0;
unsigned int g = 50;
void foo();
};
void C::foo()
{
std::cout << p << std::endl;
//p shows junk data
std::cout << g << std::endl;
//g also shows junk data
}
C::C()
{
p = 5;
}
调试foo()
时,变量p
包含垃圾值,即使它应该是5。我不确定为什么会这样显示。在我程序的其他变量中也看到了这个问题。
这不是我在Win32应用程序中使用的类或代码,但是这里的问题是相同的。
有关其他信息,这是我为功能处理消息的方式,以防万一问题出在此
LRESULT CALLBACK WndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM)
{
C* pThis = NULL;
if (message == WM_CREATE)
{
LPCREATESTRUCT lpcs = (LPCREATESTRUCT)lParam;
pThis = (C*)lpcs->lpCreateParams;
::SetWindowLongPtr(hwnd,GWLP_USERDATA,reinterpret_cast<LONG_PTR>(pThis));
return pThis->HandleMessages(hwnd,message,wParam,lParam);
}
else
{
pThis = reinterpret_cast<C*>(::GetWindowLongPtr(hwnd,GWLP_USERDATA));
return pThis->HandleMessages(hwnd,lParam);
}
}
解决方法
找到了解决方案。
您只能在对象仍在其中时访问成员变量,否则当对象超出范围时,您将仅获得垃圾值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。