遞歸函數不返回指定的值。我正在調試一個遞歸函數,用于驗證用戶輸入并在輸入正常時返回值。該函數如下所示:double load_price(){
double price;
Goods * tempGd = new Goods();
cin >> price;
while (!cin)
{
cin.clear();#undef max
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cout << endl;
cout << "You didn't enter a number. Do so, please: ";
cin >> price;
} // endwhile
if (!tempGd->set_price(price))
{
cout << endl;
cout << "The price " << red << "must not" << white << " be negative." << endl;
cout << "Please, insert a new price: ";
load_price();
}
else
{
delete tempGd;
return price;
}}的設置價格()的方法貨物類如下所示bool Goods::set_price(double price){
if (price> 0)
{
priceSingle_ = price;
priceTotal_ = price* amount_;
return true;
}
return false;}我試著在紙上畫這個問題,但是我的所有圖表看起來都和我的函數看起來一樣。我認為回報有一些問題,但我不知道在哪里。我們將非常感謝您的幫助。
2 回答

侃侃無極
TA貢獻2051條經驗 獲得超10個贊
#undef maxdouble load_price(){ for(;;) { double price; cin >> price; if (!cin) { cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); cout << endl; cout << "You didn't enter a number. Do so, please: "; continue; } if (!Goods().set_price(price)) { cout << endl; cout << "The price " << red << "must not" << white << " be negative." << endl; cout << "Please, insert a new price: "; continue; } return price; }}
- 2 回答
- 0 關注
- 449 瀏覽
添加回答
舉報
0/150
提交
取消