小编Mar*_*tin的帖子

C++/STL - 在访问std :: map中的类指针实例时程序崩溃

好的,我有一个函数,它读取一个xml文件并使用new创建控件并将它们存储在一个名为的类的公共成员变量中Window:

std::map<const char*, Button*> Buttons;
std::map<const char*, TextBox*> TextBoxes;
std::map<const char*, CheckBox*> CheckBoxes;
Run Code Online (Sandbox Code Playgroud)

Button,TextBox和CheckBox类是CreateWindowEx的自制包装器.

这是填充地图的函数:

void Window::LoadFromXml(const char* fileName)
{
    XMLNode root = XMLNode::openFileHelper(fileName, "Window");

    for(int i = 0; i < root.nChildNode("Button"); i++)
    {           
        Buttons.insert(std::pair<const char*, Button*>(root.getChildNode("Button", i).getAttribute("Name"), new Button));
        Buttons[root.getChildNode("Button", i).getAttribute("Name")]->Init(_handle);
    }   

    for(int i = 0; i < root.nChildNode("CheckBox"); i++)
    {       
        CheckBoxes.insert(std::pair<const char*, CheckBox*>(root.getChildNode("Button", i).getAttribute("CheckBox"), new CheckBox));
        CheckBoxes[root.getChildNode("CheckBox", i).getAttribute("Name")]->Init(_handle);
    }

    for(int i = 0; i < root.nChildNode("TextBox"); i++)
    {               
        TextBoxes.insert(std::pair<const char*, TextBox*>(root.getChildNode("TextBox", i).getAttribute("Name"), new TextBox));
        TextBoxes[root.getChildNode("TextBox", i).getAttribute("Name")]->Init(_handle); …
Run Code Online (Sandbox Code Playgroud)

c++ xml winapi pointers stl

2
推荐指数
1
解决办法
468
查看次数

标签 统计

c++ ×1

pointers ×1

stl ×1

winapi ×1

xml ×1