Я работаю с Visual Studio 2010 и относительно новичок в C ++.Программа, с которой я пытаюсь работать, имеет класс с параметризованным конструктором и деструктором в своем объявлении.Где-то в листинге было создание массива динамических объектов с использованием 'new'.Однако я столкнулся с проблемами, поскольку инициализация массива объектов для параметризованных конструкторов невозможна.
Я попытался реализовать векторы:
std :: vector my_object_array (длина, arg);// текущая попытка
my_object_array = new class_type [length] (arg);// предыдущий код
Однако, как только этот массив объектов создан, вызывается деструктор ~ вектора, и я получаю сообщение об ошибке во время выполнения «Отладка не подтверждена ... _BLOCK_TYPE_IS_VALID (pHead-> nBlockUse)»
Основываясь на предыдущих подобных вопросах о SO, я думаю, что это из-за двойного удаления, но я не вызывал деструктор явно на этапах отладки, и я все еще получаю эту ошибку.
Любая помощьоценили!Спасибо!
Редактировать: Добавлены некоторые фрагменты кода с измененными именами.
class class_type {
public:
class_type(int var1);
~Class_type();
/*
Member functions
*/
private:
int var1;
double var2;
double length;
double width;
double* arr1;
};
Определение конструктора:
Class_type::Class_type(int il){
length = 0;
width = 0;
var1 = il;
var2 = 5;
arr1 = new double[5];
}
Определение деструктора:
Class_type::~Class_type(){
delete [] arr1;}
Код, где возникает ошибка:
int class_type_2::create_my_objects(int num_elem){
input_value = 10;
if ( num_elem == 0 ) {
std::cout<<"Warning!"<<endl;
} else {
std::vector<class_type> my_object_array(num_elem, input_value);
//my_object_array= new class_type[num_elem](input_value);
} //Debugger doesn't go beyond this step!
return 0;
}