c++ - C++中的Qsort困境

标签 c++ qsort

Vector<Medicine*>* Controller::sortByStockAsc(){
        Vector<Medicine*>* all =repo->getAll();
        qsort(all, all->getNrMed(),sizeof(Medicine*), (comparefunction) compareNA);
        return all;}

我有上面的代码,但我的 qsort 有一些问题。 Vector<Medicine*>*是指向我需要整理的指针数组的指针。 getAll()返回 Vector <Medicine*>* . 问题之一是在 qsort()我的getNrMed()尽管我指定了定义此函数的模块,但未找到。该函数如下所示:

int MedRepository::getNrMed(){
    return MedList->getSize();
}

并返回 int .我做错了什么?

最佳答案

qsort不需要 Vector<T>* .它采用指向 vector 第一个元素的指针。

getNrMed不是 Vector<T> 的方法, 它是 MedRepository 的方法在此代码段的其他任何地方都看不到。

您需要对 compareNA 进行强制转换这一事实是严重问题的征兆。转换函数指针几乎从不是安全的。您需要使其在不进行强制转换的情况下进行编译。

毫无疑问,鉴于这里的代码质量,还有其他问题——鉴于您提供的代码数量有限,这正是可以诊断的问题。

关于c++ - C++中的Qsort困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16425758/

相关文章:

c++ - CBasePin 递增对拥有过滤器的引用。循环引用?

c - 如何从 stdlib 为 qsort 编写比较函数?

c - C 中字符串的字母数字排序顺序

c - 如何对字符串数组使用 qsort?

c++ - 通用生成文件

c++ - 对全局数组的 undefined reference

c++ - 观察者模式 : Why should Subject be Abstract?

c++ - 在具有一个元素的列表上强制 std::vector 重载而不是 int 重载

c - qsort() 中使用的比较函数是否有任何限制

c - C语言如何对数组进行排序但保留重复元素的位置?