Sim*_*mon 3 c++ dll stl stdmap
我已经创建了一个仅消息窗口类,我正在尝试将HWND映射回具有这些句柄的对象.我正在尝试使用std::map<HWND, CMyClass*>属于该类的私有静态来执行此操作,如下所示:
MyClass.h:
class CMyClass
{
...
private:
HWND m_hWnd;
HINSTANCE m_hInstance;
LPCSTR m_szClassName;
static std::map<HWND, CMyClass*> s_mapHandles;
...
};
Run Code Online (Sandbox Code Playgroud)
MyClass.cpp:
std::map<HWND, CMyClass*> CMyClass::s_mapHandles;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试添加到地图时,程序崩溃了.我尝试了三种不同的形式,它们都给出了同样的错误:
...
m_hWnd = ::CreateWindowEx(0, m_szClassName, "Message Window", 0, 0, 0, 0, 0, HWND_MESSAGE, 0, m_hInstance, 0);
s_mapHandles.insert(pair<HWND, CMyClass*>(m_hWnd, this));
Run Code Online (Sandbox Code Playgroud)
要么
...
s_mapHandles.insert(s_mapHandles.end(), pair<HWND, CMyClass*>(m_hWnd, this));
Run Code Online (Sandbox Code Playgroud)
甚至
...
s_mapHandles[m_hWnd] = this;
Run Code Online (Sandbox Code Playgroud)
在每种情况下,_Root()尝试返回的调用都会发生崩溃_Parent(_Myhead); _Parent(_Myhead)返回(_Nodepref)(*_Myhead)._Parent失败,因为_Myhead为null.
如何初始化地图,使其头部非空,我可以在不崩溃的情况下插入内容?如果我解释得很糟糕,我会道歉 - 我是C++的新手.