rit*_*mbo 1 c++ sorting polymorphism
假设我有一个A类.
而B和C是A的孩子.
A类有一个用于排序A类数组的通用算法,因此我可以将它用于B和C,而无需再为每个数组再写算法.
在算法中,有时我必须交换.问题是我只能看到对象是A类,如果我这样做:
A aux = array[i]
array[i] = array[j]
array[j] = aux
我想我有问题.因为array [i],也许它是B类,而aux是A类,所以我觉得我失去了信息.
我相信你明白这种情况......我如何使用父方法算法对一般的对象数组进行排序?
编辑:初始数组是静态的.
编辑2:所以它不可能有:A :: sort(一个数组[]); 并做我想要的?,不能交换.
唯一的方法是有一系列的参考?A*array []?
多态对象由指针或引用(或指针包装器)引用.交换指针就足够了.实际上,您应该能够使用std::sort或std::stable_sort使用合适的谓词:
// 'A' defines 'float getSortKey()'
bool mypred(B* first, B* second) {
   return first->getSortKey() < second->getSortKey();
}
std::vector<B*> them;
std::sort(them.begin,them.end(),mypred);
该策略避免了对象切片.
| 归档时间: | 
 | 
| 查看次数: | 1107 次 | 
| 最近记录: |