我建了两个CList,
typedef struct commuNode
{
int srcPlyr;
int desPlyr;
};
CList<commuNode, commuNode&> commuListA;
CList<commuNode, commuNode&> commuListB;
下面我将一个commuNode加到两个表中
ptrCommuNode = new commuNode;
ptrCommuNode->srcPlyr = 1;
ptrCommuNode->desPlyr = 2;
commuListA.AddHead(*ptrCommuNode);
commuListB.AddHead(*ptrCommuNode);我的问题是:
1\这样做是不是不可以?如果在commuListA中将这个结点删除了,是不是在commuListB中这个结点就对应一个无效结点?如果不可以,难道设计成一个按值的LIST么?比如 CList<commuNode, commuNode> commuListA;
2\就单个LIST来说,如果在这个CList中对这个结点进行Remove操作,CList会自动将这个结点delete掉,还是仅仅 从这个LIST中将这个项remove掉?
typedef struct commuNode
{
int srcPlyr;
int desPlyr;
};
CList<commuNode, commuNode&> commuListA;
CList<commuNode, commuNode&> commuListB;
下面我将一个commuNode加到两个表中
ptrCommuNode = new commuNode;
ptrCommuNode->srcPlyr = 1;
ptrCommuNode->desPlyr = 2;
commuListA.AddHead(*ptrCommuNode);
commuListB.AddHead(*ptrCommuNode);我的问题是:
1\这样做是不是不可以?如果在commuListA中将这个结点删除了,是不是在commuListB中这个结点就对应一个无效结点?如果不可以,难道设计成一个按值的LIST么?比如 CList<commuNode, commuNode> commuListA;
2\就单个LIST来说,如果在这个CList中对这个结点进行Remove操作,CList会自动将这个结点delete掉,还是仅仅 从这个LIST中将这个项remove掉?
解决方案 »
- 已知斜边和夹角,求直角边。
- SDI窗口中,如何在不丢失已画出的图形的前提下,更改背景色呢?
- 一个非常奇怪的问题,高手进来看看。
- msdn问题求救?
- 如何获得windows版本?
- 请各位解释一下含义
- 入门问题,在onpaint中,怎样清除背景?
- 高分求救,VC中怎样通过ODBC调用Oracle存储过程?
- 请问各位大侠如下快速操作600M到1G的Dat文件? 为了这我发了好多贴子,您能尽快帮我吗?在些我真诚谢谢您!
- 今天用vs2013编译一个代码,出现了以下三个问题,各位大虾们,麻烦帮帮忙呀,这个是哪里出问题了啊?
- 请问如何在MFC里通过进程名字删除这个进程?多谢!
- 如何获取CComboBox的值?
==如果你只是用CList的Remove函数删除节点,那么这个对象不会被销毁掉,B列表照用无误。2\就单个LIST来说,如果在这个CList中对这个结点进行Remove操作,CList会自动将这个结点delete掉,还是仅仅 从这个LIST中将这个项remove掉?
==只可能进行Remove掉,不可能把这个节点对象delete掉,因为CList并不知道这个对象是new出来的,如果自动delete,岂不要崩溃啊。
他们不是用地址引用的,不是你想当然的都指向了*ptrCommuNode,而是值复制。变成各自的数据单元了
2)将它其中的那块内存中的东西去掉,也就是你说的List中的这个项Remove掉。原来做拷贝对象的东西无关