BIU*_*BIU 9 c++ initialization class decorator
这是家庭作业......我不是要求答案,我只是有一个错误,我不知道该怎么办.谢谢!
有问题的bug可能与赋值本身无关,但这里仍然是赋值说明:
我正在进行一项任务(在C++中),旨在通过披萨与浇头的经典例子来教授使用装饰设计模式.(我的教授也可以从http://simplestcodings.com/2010/12/26/decorator-design-pattern-example-ni-c/直接解除它.我遇到了一个小问题,我想知道是否有人可以帮助我.
我有一个主菜单(比萨店)对象,它从用户那里获取输入并在披萨上执行所需的操作.用户从一个基本披萨开始,然后可以添加配料,直到它们完成.所以我的"newPizza"函数所做的第一件事是将新的Pizza声明为a Plain,它是抽象类的子类Pizza.
然后他们就可以进入他们选择的浇头.每次都会Pizza向该addToppings()函数发送指向同一对象的指针,添加新的装饰,并返回指针.每个装修从价位,从继承继承pizzaToppings,从继承Pizza.
这是主要订单功能的相关部分:
Pizza* Menu::newPizza()
{
cout << "\nNew Pizza";
//accept the next choice
int choose = 0;
//create the new pizza
Plain * currentPizza = new Plain();
//until they choose to end the order
while (choose != 3)
{
//accept the choice
cin >> choose;
switch (choose)
{
//if they want to add a new topping
case 1:
{
//add topping to current pizza
//and this is where the problem is spotted by the compiler
addTopping(currentPizza);
break;
}
Run Code Online (Sandbox Code Playgroud)
问题是当我尝试将指针发送currentPizza到函数时addTopping(),我得到"运行时检查失败#3 - 正在使用变量'currentPizza'而没有被初始化."
我不是刚刚在第7行初始化它吗?
如果我点击"继续",程序会继续运行,但是每次调用该函数时都会出现同样的错误.这只是一个语法错误,还是我在这里有一些实际问题?
谢谢!!
[编辑:]
addTopping()函数:
Pizza* Menu::addTopping(Pizza* thisPizza)
{
cout << "\nAdd topping";
//declare choose int
int choose = 0;
//accept number of topping
cin >> choose;
//decide which one to add
switch (choose)
{
//mozzarella
case 1:
{
thisPizza = new Mozzarella(thisPizza);
break;
}
//mushrooms
case 2:
{
thisPizza = new Mushrooms(thisPizza);
break;
}
//another 13 possible toppings, won't bore you with the details ;)
}
cout << "\nEnd add topping\n";
return thisPizza;
}
Run Code Online (Sandbox Code Playgroud)
你是否已经currentPizza宣布为Pizza班级的一个领域而你正在其他地方使用它?如果是这样,currentPizza您正在更新的newPizza是特定于该方法的,并且您需要执行currentPizza = new Plain();而不是currentPizza在方法范围内声明新变量.
此外,在你的addTopping方法,你只更新的说法thisPizza,这是一个复制的的指针 currentPizza.
你需要这样做:
currentPizza = addTopping(currentPizza);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
478 次 |
| 最近记录: |