高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】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
|