如何创建一个窗口的vector??就是一个长度可变的Form列表?(200分)

  • 主题发起人 主题发起人 luanma
  • 开始时间 开始时间
L

luanma

Unregistered / Unconfirmed
GUEST, unregistred user!
我的声明为vector<TF_ckxx> myvector;
//!TF_ckxx是一个Form,并且里边有两个string 书据,ip,hostName;
使用时
TF_ckxx * tmpForm=new TF_ckxx(Application);
tmpForm->ip="AAA";
tmpForm->hostName="BBB";
usrForm.push_back(*tmpForm);
delete tmpForm;
现在用
usrForm[0]->ip来引用ip导致错误,那位指点一二,我已经痛苦两天了!!
 
你先把tmpForm释放掉了,当然出错啦
你把释放的代码要写在用完usrForm以后, 或者在程序关闭时逐一Free usrForm里的各个资源
 
我进行push_back的时候没有在创建一个新的对象,并加到数组里边吗?我的想法是要一个窗口的动态数组!
 
usrForm.push_back(*tmpForm);
你把tmpForm代表的那个Form加入进了usrForm
现在你可以用usrForm[0]->IP来访问它
但你在下一句delete tmpForm时又把它给释放掉了
所以usrForm[0]指向的已是非法地址,故引用usrForm[0]->IP就会报地址错误。
 
那么在我如何建立一个窗口的动态数组那?或者说一个对象的动态数组,要求是在某个事件中触发,同时根据条件初始化,并且添加进去。留到以后使用!
 
建议你使用TObjectList
将Form队列加入TObjectList
若TObjectList的OwnsObjects=true,在你Delete TObjectList时,系统自动
Free其包含的对象
 
可否给个例子?
 
TObjectList * tmplist //作为数据成员定义
tmplist = new TObjectList;
TF_ckxx * tmpForm=new TF_ckxx(Application);
tmpForm->ip="AAA";
tmpForm->hostName="BBB";
tmplist->Add(tmpForm);
退出时
delete tmplist;

详细信息请看TObjectList帮助
 
时间太久,强制结束。
 
多人接受答案了。
 
后退
顶部