C++ BinaryHeap类heapsort方法声明与定义不兼容报错如何解决?
错误原因
你遇到的是类成员函数声明和定义的返回值不匹配问题:
- 类内声明的
heapsort方法返回值是vector<Comparable> - 类外实现的
heapsort方法返回值写的是void
C++语法要求成员函数的声明、定义的返回值、参数列表、const修饰符必须完全一致,二者不一致就会触发编译器的声明不兼容报错。
修复方案
你可以根据自己的功能需求二选一:
方案1:不需要返回排序后的数组
直接修改类内的方法声明,把返回值改成void即可:
// 头文件类内的声明修改为 void heapsort();
修改后声明和定义的返回值匹配,报错就会消失,排序逻辑会直接修改堆内部的array数组。
方案2:需要返回排序后的数组
保留类内的声明不变,修改类外的方法定义的返回值,最后加上返回语句即可:
template <typename Comparable> // 把返回值从void改成vector<Comparable> vector<Comparable> BinaryHeap<Comparable>::heapsort() { // Build heap (rearrange array) for (int i = currentSize / 2 - 1; i >= 0; i--) heapify(array, currentSize, i); // One by one extract an element from heap for (int i = currentSize - 1; i > 0; i--) { // Move current root to end swap(array[0], array[i]); // call max heapify on the reduced heap heapify(array, i, 0); } // 新增返回排序后的数组的语句 return array; }
内容的提问来源于stack exchange,提问作者codingisfun543
相关产品推荐
相关产品推荐

