查看单个帖子
旧 2009-05-06, 04:25 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】issues with deleting groups

issues with deleting groups
issues with deleting groups
i'm using version 1.12, and i'm having issues deleting groups. it's giving me a "pure virtual method called" error. i'm able to output data from the group record, so i don't believe its because the record is null. is there something i'm missing?
here's a code snippet:
int breakgroup(oddbdatabaseptr pdb, oddbgroupptr & group, list<oddbentityptr> & entlist){
if(!group.isnull()){
cerr<<"breaking group"<<endl;
//get ids in the group
oddbobjectidarray ids;
int numents = group->allentityids(ids);
//convert each id into an entityptr
for(int x=0; x<numents; x++){
entlist.push_back(ids[x].safeopenobject(oddb::kforwrite));
}
//kill the group
cerr<<group->description()<<endl;
group->clear();
group->erase();
return entlist.size();
}
return 0; // nothing there
}
thanks,
chuck
still having issues
the error specifically occurs at:
group->clear();
i've done some further checking, and have verified that both the group, and all of its entities exist.... is there some way i can get to the underlying blob info to do some further investigation?
thanks
can you post a file, where you are having this problem?
i cannot reproduce it.
vladimir
issue resolved
i was working on putting togeather an example file for you when i discovered the source of my problem.
it turns out that it was not clear whether or not the group was open for write in code outside this function. this is due to me using stl lists to pass around group pointers rather than passing ids (and forcing myself to open the entity when i'm using it rather than passing it in as an objectptr).
removing all uses of stl lists in my code in favor of oddbobjectidarray, and calling safeopenobject when i specifically need the use of an item in the list appears to have resolved the issue.
thanks,
chuck
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)