Получение переполнения стека при вызове функции - PullRequest
1 голос
/ 09 декабря 2011

У меня есть базовый класс, от которого наследуются три класса. Всякий раз, когда эти дочерние классы создаются в функции, я получаю переполнение стека, когда функция входит в тело. Они могут быть созданы в конце или в начале, это не имеет значения. Как только тело функции введено, я получаю переполнение стека. Если классы удалены, функция работает нормально. Дочерние классы не содержат ничего, кроме одной переопределенной функции, а также их конструкторы и деструкторы. Все конструкторы и деструкторы пусты.

int main()
{
    Borrow borrow;

    MovieStore store( "STORE!!!!!!" );
    store.initalize();
    store.processTransaction();

    return 0;
}

Не уверен, насколько это могло бы помочь, но в основном это занятие для детей. Как только тело функции введено, возникает переполнение стека. Даже если бы я его создал до возврата 0, он все равно зависнет при входе в тело функции. Если он удален, программа работает нормально. На самом деле я объявляю заимствование в другой функции (основной - короче), но она имеет одинаковый эффект независимо от того, в какую функцию она помещена.

class Borrow : public Transaction
{
public:
    Borrow();
    virtual ~Borrow();


    virtual void perform( Customer *, Item * );
};

Заимствовать и другие дочерние классы одинаковы. Пустой конструктор и деструктор с одной переопределенной виртуальной функцией.

Реализация выполнения:

void Borrow::perform( Customer *customer, Item *aMovie )
{
    customer->addMovie( aMovie, "B" );
}

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

Благодаря UncleBens я смог выяснить, что класс с большим объектом создавался несколько раз, создавая переполнение стека.

1 голос
/ 09 декабря 2011

Я полагаю, что ваша функция рекурсивная, и вы никогда не перестанете ее вызывать.

...