Это домашняя работа ... Я не прошу ответов, у меня просто ошибка, я не знаю, что делать. Спасибо!
Возможно, рассматриваемая ошибка не имеет ничего общего с самим назначением, но в любом случае вот описание назначения:
Я работаю над заданием (в C ++), предназначенным для обучения использованию шаблона дизайна декоратора на классическом примере пиццы с начинкой. (Мой профессор, возможно, также поднял это прямо с http://simplestcodings.com/2010/12/26/decorator-design-pattern-example-ni-c/). У меня возникла небольшая проблема, с которой я задавался вопросом, может ли кто-нибудь помочь мне с этим.
У меня есть объект главного меню (пиццерия), который принимает данные от пользователя и выполняет нужные действия с пиццей. Пользователи начинают с простой пиццы, а затем могут добавлять к ней начинки до тех пор, пока не закончат. Итак, первое, что делает моя функция "newPizza", это объявляет новую Pizza как 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;
}
Проблема в том, что когда я пытаюсь отправить указатель 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;
}