多个制造商和类型转换

时间:2013-05-07 10:32:22

标签: c++

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*>'

这有什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:1)

请改为尝试:

Vector<Medicine*> Controller::getMedicinesSortedByStockAsc() {
    Vector<Medicine*> all = repo->getAll();
    std::sort(all.begin(), all.end(), compareNA);
    return all;
}

注意:

  • 您没有提供Vector的定义,因此我认为它与STL兼容。从代码的其余部分来看,这可能是一个不正确的假设。
  • 您没有提供compareNA的说明,但我选择假设它可以与STL风格的算法兼容。