Пытаюсь присвоить значения вектора v1 k v2 но компилятор дает ошибку. Где ошибка? И ещё один вопрос, как перезагружать оператор присваивания ???
Process returned -1073741819 (0xC0000005) execution time : 1.253 s
Press any key to continue.
Вот код
#include
vector_c(vector_c &c)//copy construck
{
index=c.index;
Max = c.Max;
vector1 = new int[Max];
for (int i = 1; i <=Max; i++)
{
vector1[i] = c.vector1[i];
}
};
~vector_c()
{
delete [] vector1;
};
void max_znachenie()
{
int index1=0;
index1 = vector1[1];
for(int i=1; i<=Max;i++)
{
if(vector1[i] > index1 ) index1 = vector1[i];
}
cout << index1 << endl;
};
void get_inf(int element)
{
vector1[++index]=element;
};
int out_inf()
{
return vector1[index--];
};
};
int main()
{
vector_c v1(3);
v1.get_inf(78);
v1.get_inf(2);
v1.get_inf(5);
v1.max_znachenie();
cout << endl;
cout << endl << v1.out_inf() << endl << v1.out_inf() << endl << v1.out_inf() << endl;
vector_c v2=v1;
cout << v2.out_inf();
return 0;
}
Ответ
Прогнала ваш код в дебаггере. Есть 2 проблемы.
В конструкторе копирования копируются не все поля.
Надо добавить.
index=c.index;
Функция переписана.
void get_inf(int element)
{
vector1[index++]=element;
};
Пример перегрузки оператора присваивания
class vector_c
{
private:
int* vector1;
int Max;
int index;
public:
vector_c(int sizze)
{
index=0;
Max=sizze;
vector1 = new int[Max];
};
vector_c& operator=(const vector_c& right) {
//проверка на самоприсваивание
if (this == &right) {
return *this;
}
// Здесь скопируйте все значения
return *this;
}
};
Комментариев нет:
Отправить комментарий