Шаблон проектирования декоратора, ошибка функции

Это домашнее задание ... Я не прошу ответов, у меня просто есть ошибка, я не уверен, что делать делать с. Спасибо!

Рассматриваемая ошибка, вероятно, не имеет ничего общего с самим назначением, но в любом случае вот описание назначения:

Я работаю над назначением (на 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;
}

9
задан Gilles 'SO- stop being evil' 17 September 2012 в 22:39
поделиться