【发布时间】:2015-08-23 17:14:31
【问题描述】:
在下面的代码中,我尝试使用 getToppings() 方法输出披萨配料列表。我想在每个内部“while”循环的末尾清除这个浇头列表(即每个新的比萨订单必须在没有浇头的情况下启动)。不幸的是,我没有办法清除我的 listOfToppings 字符串。当我明确使用 .clear() 方法时,前一个披萨的最后一个浇头会转移到新的披萨上。如何清除每个新披萨的 listOfToppings?
int main()
{
PizzaOrder pizza;
string size;
string toppingSelection;
bool innerLoop = true;
bool outerLoop = true;
int currentToppingsNum;
// Outer loop
while (outerLoop)
{
// Outer loop
...
// Inner loop
while (innerLoop && currentToppingsNum < 5)
{
pizza.PizzaOrder::getToppings(list);
cout << "Current Pizza: " << pizza.stringizeSize() << list << "\n\n";
cout << "Select an item by number (0 when done): \n\n";
...
cout << "Selection: ";
...
...
pizza.displayPizza();
} list.clear();
}
return 0;
}
...
void PizzaOrder::getToppings(string &listOfToppings)
{
for (int i = 0; i < numToppings; i++)
listOfToppings = listOfToppings + " + " + toppings[i];
}
【问题讨论】:
-
When I explicitly use the .clear() method, the last topping of the previous pizza is transferred to the new pizza.这意味着您在错误的时间调用它 - 在最后一次迭代之前,而不是之后。在内循环的右大括号之后调用它。 -
伊戈尔 - 没有骰子。我仍然看到最后一个顶部选择出现在 PizzaOrder 的新实例中。
-
我正要回答你的问题,但你让我太饿了 - 去吃午饭吧。
-
那你还是做错了。很难说是什么,因为您还没有显示您实际运行的代码,即进行
clear()调用的代码。 -
我在内部循环的末尾添加了带有 list.clear() 的修改后的代码。我想知道这种行为是否与 &listOfToppings 作为参考参数有关。
标签: c++