结构如下:
typedef struct A{
int n;
CString s;
};在函数中
A a;
a.n = 1;
a.s = "1";
a的地址放在树节点数据中
tree.SetItemData(item,&a);
在后面取这个数据时数据已经被清了,这个我知道是什么原因。有谁知道如何保证这个结构体在将来可以使用?
我试过把结构用指针来动态生成,可是动态分配的结构a.s是空,不知道该如何解决。
typedef struct A{
int n;
CString s;
};在函数中
A a;
a.n = 1;
a.s = "1";
a的地址放在树节点数据中
tree.SetItemData(item,&a);
在后面取这个数据时数据已经被清了,这个我知道是什么原因。有谁知道如何保证这个结构体在将来可以使用?
我试过把结构用指针来动态生成,可是动态分配的结构a.s是空,不知道该如何解决。
你给s 付值不就行了?
A a;
a.n = 1;
a.s = "1";
====================
你这是局部变量,出了该函数a的生存期就结束了。所以就不行了。
用new出来的结构吧。
struct A{
int n;
CString s;A():n(0), s(_T("")){}
};
int n;
char text[MAX_PATH];
};
typedef struct A{
int n;
CString *s;
};然后 a.s = new CString();
记得用delete.
因为这个是历史问题,我不想做这些改动
--------------------------------------------放到堆上?怎么放?A():n(0), s(_T("")){}这个写法还没见过 -_-!,只是初始化用的吗?
这个就是构造函数
你NEW一个对象对直接给A附值可以保存的住的
应该new一个对象放在堆上,并记住在适当的时候销毁,否则有内存泄漏。也可以申明一个全局对象来使用。