我在h文件中定义了struct
typedef struct fenlei5{
CString name;
CStringArray* pinpai;
}fl5;typedef struct fenlei{
CString name;
int num;
fenlei5* fenlei5[100];
}fl0; fl0 fl;
然后在cpp文件中的 oninit初始化函数中定义了这些fl.num = 0;
CStringArray a1;
a1.Add(_T("马甲1"));
fl5 fl5a1;
fl5a1.name = _T("马甲");
fl5a1.pinpai = &a1;
fl.fenlei5[fl.num] = &fl1a1;
fl.num++;
//////////////////////////////////////////////////////////这时fl.fenlei5[0]->name  可以输出是马甲但是oninit初始化结束后 在list列表中读取这个fl.fenlei5[0]->name就显示指针错误?
请问怎么解决
ps:实际我的程序是fl,fl1,fl2,fl3,fl4,fl5 每个都是一个struct体 fl中有fenlei1[100] fl2中有fenlei3[100] 以此类推

解决方案 »

  1.   

    直接用CStringArray不要用指针,如果需要二维,就CStringArray<CStringArray>嵌套
      

  2.   

    我需要的是CStringArray + 一个CString 保存分类名 所以只用CStringArray<CStringArray> 没法实现啊
      

  3.   

    如果用 fenlei5 * 指针的话 建议 用 new / delete 在堆上分配新, 栈上的在超出作用域后会被清理typedef struct fenlei
    {
        CString name;
        int num;
        CArray <f15> fenlei5;
    }f10;
      

  4.   

    我需要的是CStringArray + 一个CString 保存分类名 所以只用CStringArray<CStringArray> 没法实现啊
    你把这两个再包装成一个结构体就可以了