gpt4 book ai didi

c++ - 指向 std::map 的指针问题

转载 作者:行者123 更新时间:2023-11-30 04:33:47 26 4
gpt4 key购买 nike

请考虑以下代码,我在将值插入 std::map 对象时遇到访问冲突。不知道为什么。您看到的代码使用了

std::map<int, int>

然而,我最初尝试过

std::map<int, MSGTYPE>

具有相同的结果访问冲突。 (我知道枚举是 INT)。

// a common include file has this
// common.h

enum MSGTYPE
{
MSG_R1,
MSG_A1,
MSG_L1,
MSG_S1,
MSG_S2
};

typedef std::map<int, int> SYSMsgMap;

typedef struct _MYOBJ
{
int x1;
int x2;
SYSMsgMap XFerMap;
}MYOBJ;

我对这些结构的使用如下所示:

MYOBJ *cMYOBJ::AddNetwork(cvnet *net)
{
MYOBJ *ob;

ob = new MYOBJ();

// initialization code removed for this post/brevity

BuildMsgMap(ob->XFerMap);

// rest removed for this post/brevity
}

void cMYOBJ::BuildMsgMap(std::map<int, int> &mm)
{

mm.clear();

switch(NETTYPE)
{
case 1:
mm[ 1] = MSG_R1; <-- Access violation here!
mm[ 2] = MSG_A1;
mm[ 4] = MSG_L1;
mm[16] = MSG_S1;
mm[32] = MSG_S2;
break;

// rest removed...
}

最佳答案

ob 不会被 memset(ob, sizeof(MYOBJ), 0)ob = new MYOBJ; 之后的某处意外清除在调用 BuildMsgMap() 之前?

(因为代码是遗留的,因为 memset 技巧在 C 中经常使用。)

关于c++ - 指向 std::map 的指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com