[英]Access violation error on inserting data to map variable
我在頭文件中聲明了一個映射變量,並嘗試從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));
}
此方法引發錯誤:“ 0xC0000005:訪問沖突讀取位置0x0000000000000150。”
但是,如果我在此AddName method
聲明此映射變量,則不會出錯。
我正在從另一個具有必需參數的類中調用此AddName方法。
TestPtr test = nullptr;
test->AddName(nodeDetails.Attribute("Name"), nodeDetails.Attribute("Value"));
有什么問題
在使用之前必須實例化test
對象:
TestPtr test;
test.addName(...);
或動態分配(使用new
)
TestPtr* test = new TestPtr();
test->AddName(...);
//
//...
//
//And don't forget to free memory
delete test;
(在您的情況下,第一種方法更“內存安全”;))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.