Я работаю с std::vector
, чтобы удерживать некоторые объекты, у которых есть динамически распределенные элементы, и когда я иду, чтобы помещать Вещи в вектор, происходит несколько вещей, которые я не понимаю.C++ проблемы с вектором
Я называю
push_back()
и использовать конструктор объектов в качестве аргумента, но по какой-то причине он идет в деструкторе объекта. почему это; он должен добавить не удаление?Я вызываю
push_back()
во второй раз, делая то же, что и раньше, но на этот раз он бросает незаконный доступ к памяти при удалении оператораdbgdel.cpp
(строка 52). но delete никогда не должен вызываться в конструкторе, илиpush_back()
.
Я не уверен, какие разделы кода относятся к этому вопросу, так как рассматриваемые линии довольно укоренены в методе.
Edit: Код добавлен
class Thing{
int** Array;
int size; // of square array
Point current; // location
Thing(int _n){
// allocates, and gives values to the array, and members
// only constructor
}
};
class ThingMgr{
Thing * Control;
Thing * Current;
Thing * Previous;
int size; // size of all. same use as in Thing
ThingMgr(int _n){
size = _n;
Control = new Thing(size);
Current = new Thing(size);
Previous = new Thing(size);
}
void rearrange(int _num){
std::vector<Thing> possibles;
// performs deterministic work on members
// [0] first
possibles.push_back(Thing(size)); // this succeeds
// [1] second
possibles.push_back(Thing(size)); // this fails
// more operations to be performed never reached.
}
};
Можете ли вы разместить строки, включая push_back().Я подозреваю, что вы копируете объект в вектор, и поэтому объект создается, копируется и затем разрушается (так вызывается деструктор) –
Почему бы вам не показать фактический код? Я не уверен, что ваше описание прозы точно соответствует вашему коду, поскольку жаргон кажется немного .. unixed – sehe
Во время 'push_back' векторному классу разрешено делать копии вашего объекта с помощью его конструктора копирования, а затем некоторые из этих копий могут быть уничтожены, и их деструкторы будут вызваны. У вас есть допустимый конструктор копирования для вашего класса? –