整个数据结构如下:
map:
+-----------------+
|方案名1|方案列表1|
+-----------------+
|方案名2|方案列表2|
+-----------------+
list:
+---------------------------------+
|内容结构1|内容结构2|...|内容结构n|
+---------------------------------+由于内容结构数不是一定的,因此使用CMap中嵌套CList。代码如下:typedef struct
//方案内容结构
_ContextItem
{
//内容1
CString tPlayTime;
//内容2
CString szMusicName;
//内容3
CString szMusicPath;
} ContextItem;class CProjectItem  
{
public:
//方案内容列表
CList<ContextItem, ContextItem>* list_context;
};
class CProjectItemControl  
{
public:
//方案名字对应方案内容
CTypedPtrMap<CMapStringToOb,CString,CProjectItem*> adfs;
};
但是在插入,修改,删除的时候,会报错。
大虾们帮帮忙,能够帮我看看结构定义是否有问题,最好能够给出插入,修改的代码。
如果我的结构定义不好,请帮忙修改一下。
马上给分,在线等待!!!!

解决方案 »

  1.   

    list和map存指针就不容易出错了
      

  2.   

    不会是List和Map的错
    贴出插入以及其它操作的代吗来!
      

  3.   

    楼上的,我就是写了好多插入操作
    结果报内存什么的错误
    或者直接跳到mfc的文件中报错去了faint你只要写一两句话试一试就好了
    我的代码就是几句话的
      

  4.   

    CProjectItem 从CObject继承。看看MSDN关于CMap的范例
    samples\VC98\mfc\advanced\collect
      

  5.   

    是的,我是参考的msdn的那个程序

    折磨人呀
      

  6.   

    我的代码是这样的:
    void CFileioDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    CProjectItemControl cpic;
    CProjectItem cpi,cpi1;
    CProjectItem* cpi2;
    ContextItem ci1,ci2,ci3,ci4;
    ci1.tPlayTime="11";
    ci1.szMusicName="12";
    ci1.szMusicPath="13";
    //cpi.list_context->AddTail(ci1);
    cpic.adfs["pname"]=&cpi;
    cpic.adfs.Lookup("pname",cpi2); if (!(*cpi2).list_context->IsEmpty())
    AfxMessageBox("ok") ;
    else
    AfxMessageBox("fail") ;}通过编译,运行出错为0xccccccccc内存不能read
    怎么办,哪里错了????如果上面代码的
    //cpi.list_context->AddTail(ci1);
    加上那么就是debug assertion failed
    终止、重试、忽略
    求救
      

  7.   

    你这是内存溢出的错误,你把CList和CMap里面都用指针,然后,在生成的时候用New生成,然后,在删除的时候用Delete方式,
      

  8.   

    顺便问个问题我现在在调试程序的时候
    每次点执行快捷键会谈出对话框
    要我编译所有的文件说什么:one or more file are out of data or do not exist
    然后列了一堆obj什么选项可以调回来,感谢
      

  9.   

    Damachli(马大哈) 说得对!你没有为指针分配内存就使用了:——)