Vector<Medicine*>* Controller::sortByStockAsc(){
Vector<Medicine*>* all =repo->getAll();
qsort(all, all->getSize(),sizeof(Medicine*), (comparefunction) compareNA);
return all;
}
所以,我有上面的函数应该排序一个对象数组。我得到错误
cannot convert 'Vector<Medicine*>' to 'Vector<Medicine*>*' in initialization
但如果我把它写成Vector<Medicine*> all =repo->getAll();
,我会得到第3行的一堆新错误(如果我在第二行有上一个错误则不存在):
Multiple markers at this line
- Method 'getSize' could not be resolved
- Invalid arguments ' Candidates are: void qsort(void *, unsigned int, unsigned int, int (*)(const void *, const
void *)) '
- base operand of '->' has non-pointer type 'Vector<Medicine*>'
这有什么问题,我该如何解决?
答案 0 :(得分:1)
请改为尝试:
Vector<Medicine*> Controller::getMedicinesSortedByStockAsc() {
Vector<Medicine*> all = repo->getAll();
std::sort(all.begin(), all.end(), compareNA);
return all;
}
注意:
Vector
的定义,因此我认为它与STL兼容。从代码的其余部分来看,这可能是一个不正确的假设。compareNA
的说明,但我选择假设它可以与STL风格的算法兼容。