Помощь с конструктором (элементы pusing_back в указатель на массив) - PullRequest
0 голосов
/ 23 марта 2011

У меня проблема с вставкой элементов в указатель на вектор некоторых элементов, которые я определил в своем коде (в данном случае - Рецепты).В некоторых других частях кода использование push_back работает нормально, но если я использую его в этом коде:

{
    Recipe defaultRec;
    this->recipes_ = new vector<Recipe>;
    this->recipes_->push_back(defaultRec);
}

, я получаю следующее сообщение об ошибке:

"Необработанное исключение при0x01164031 в Назначении 2.exe: 0xC0000005: Место чтения нарушения доступа 0xcccccce0 "

Объявление recipes_:

vector<Recipe>* recipes_;

Надеюсь, что кто-нибудь может мне помочь, заранее спасибо.

Ответы [ 2 ]

1 голос
/ 23 марта 2011

В вашем коде нет ничего плохого. Проблема скорее всего в другом. Подобные проблемы часто возникают из-за перезаписи памяти, такой как запись за концом массива или запись в неинициализированную область памяти.

1 голос
/ 23 марта 2011

Ваш код выглядит хорошо для меня. Я уверен, что проблема в другом.

Кстати, почему вы используете указатель на вектор? Почему бы не это:

vector<Recipe> recipes_; //member

Recipe defaultRec;
recipes_.push_back(defaultRec);

По крайней мере, это спасает вас от распределения и освобождения. Кроме того, скорее всего, указатель на вектор не будет вам лучше, чем выше!

...