錯誤信息
cannot convert 'int*' to 'double*' for argument 1 to 'void bubbleSort(double*, int)'
問題代碼
int list[10] = {3.3, 4.1, ...}; // 隱式截斷為整數
bubbleSort(list, 10); // 實參類型 int*
void bubbleSort(double list[], int size) { ... } // 形參類型 double*
修正
double list[10] = {3.3, 4.1, 6.3, 2.4, 3.9, 9.4, 4.2, 3.9, 2.5, 7.8};
bubbleSort(list, 10);
深度解析
- C++ 中數組名退化為指針,類型必須**精確匹配**(
int* ≠ double*),不存在隱式轉換。
- 初始化列表
{3.3, 4.1} 賦給 int[] 會截斷小數部分,導致邏輯錯誤。
- 若需同時支持多類型,可使用模板:
template<typename T> void bubbleSort(T list[], int size);