将数据插入映射变量时出现访问冲突错误

时间:2016-01-29 06:52:29

标签: c++

我在头文件中声明了一个map变量,并尝试从cpp文件中的方法向此插入一些值。

在标题(.h)文件中,

class Test
{
public:
    void AddName(const std::string& name, const std::string& value);
private:
    std::map<std::string, std::string> m_names;
};

.cpp文件中,

void Test::AddName(const std::string& name, const std::string& value)
{
    m_names.insert(std::pair<std::string, std::string>(name, value));
}
  

此方法抛出错误:&#34; 0xC0000005:访问冲突读取   位置0x0000000000000150。&#34;

但是,如果我在此AddName method中声明此地图变量,则没有错误。

我从另一个具有必需参数的类调用此AddName方法。

TestPtr test = nullptr;
test->AddName(nodeDetails.Attribute("Name"), nodeDetails.Attribute("Value"));

问题是什么?

1 个答案:

答案 0 :(得分:1)

test对象在使用之前必须进行实例化:

TestPtr test;
test.addName(...);

或动态分配(使用new

TestPtr* test = new TestPtr();
test->AddName(...);
//
//...
//    
//And don't forget to free memory
delete test; 

(在你的情况下,第一种方法更“内存安全”;))