我正在尝试从 cstdlib 运行 qsort。功能
qsort( m_all_animals , numberOfAnimals() , sizeof(Animal*) , 比较);
成功执行,但未对 m_all_animals 进行排序。实际上,它对数组没有任何作用。底层数据结构在这里
Animal** m_all_animals;
//the number of elements, I tested it and it works
int numberOfAnimals(){
int result=0;
for (int i=0;i<m_size*2;++i){
if (m_all_animals[i]==NULL)
break;
++result;
}
return result;
}
int compare (const void* p1, const void* p2){
return ((Animal*) p1)->get_size()-((Animal*) p2)->get_size();
}
如果有帮助,我有以下继承层次结构
Animal<-Bear
Bear<-brown_bear
brown_bear<-white_bear
Bear<-panda_bear
Animal<-snail