c++访问 map 时发生访问冲突

标签 c++ function access-violation functor

我有一个 map<string, std::function<void(AgentMessage&)>> (AgentMessage 是一个带有几个字符串的结构)。当我尝试使用迭代器访问它时,我在 pair 的复制函数上遇到访问冲突.

注意:std::function 指向与它被复制的地方不同的 dll 中的函数。

编辑:我认为解释对于一段简单的代码来说已经足够好了,但仍然 - 就在这里。

for (map<string, std::function<void(AgentMessage&)>>::iterator it = mapRef.begin(); it != mapRef.end(); it++)
{
    auto functionCopy = it->second; // IT CRASHES HERE
}

最佳答案

你能展示将元素插入 map 的代码吗?

我试过了,效果很好:

#include <functional>
#include <map>
#include <string>

using namespace std;

struct AgentMessage
{

};

void f(AgentMessage& am)
{

}

void g(AgentMessage& am)
{

}

int main()
{
    AgentMessage am;
    map<string, std::function<void(AgentMessage&)>> m;

    m["f"] = f;
    m["g"] = g;

    for (map<string, std::function<void(AgentMessage&)>>::iterator it = m.begin(); it != m.end(); ++it)
    {
        auto func = it->second;
        func(am);
    }
}

关于c++访问 map 时发生访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25226304/

相关文章:

vb.net - 在文本框中输入时出现 AccessViolationException

C++ - 构造 ICMP 数据包时出现访问冲突

c# - 媒体基础 : ReadSample - Access Violation Exception

c++ - C++/Qt 应用程序中的 PySide DLL 加载冲突

c++ - 如何调用一个方法,该方法需要一个子类对象,子类对象由指向其父类(super class)的指针引用?

php - 用于显示 mysql 版本 5.0.45 的 mysql 数据库中用户定义函数的代码的 Mysql 查询是什么?

jquery - 将 ajax 调用、成功和错误作为函数

c++ - 关于 C++ 中的二维数组初始化

c++ - TopCoder 编码环境链接器错误

excel - excel中某些文本的条件数据输入