else {
int *choice = new int[num_choice];
double *quantity_choice = new double[num_choice];
// ... 使用數組 ...
} // ← 作用域結束,choice/quantity_choice 生命周期結束
delete[] choice; // ❌ 編譯錯誤:choice 不在作用域內
delete[] quantity_choice;
error C2065: “choice”: 未聲明的標識符
error C2541: “delete”: 不能刪除不是指針的對象
choice 和 quantity_choice 在 else 代碼塊 { } 內聲明,屬於塊級作用域。代碼塊結束後變量銷毀,外部無法訪問,導致 delete[] 找不到標識符。
int *choice = nullptr;
double *quantity_choice = nullptr;
if (num_choice == 0) { ... }
else {
choice = new int[num_choice];
quantity_choice = new double[num_choice];
// ... 使用 ...
}
if (choice) { delete[] choice; choice = nullptr; }
if (quantity_choice) { delete[] quantity_choice; quantity_choice = nullptr; }
cal() 函數缺少 default 分支,導致「not all control paths return a value」警告。需補全:
default: return 0.0; // 或拋出異常