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