잘 모르겠습니다. 복사 생성자 또는 연산자 = 올바르지 않습니다. 필자는 두 개의 "무덤"으로 테스트했고 프린터가 작동하지만 컴파일러가 프로그램 끝에 "디버그 어설 션이 실패했습니다"라고 말했습니다. 당신이 클래스를 복사 할 때마다, 당신은 데이터에 바로 포인터 대신 전체 벡터를 복사되지 않습니다 :Vector 클래스에서 operator = 만드는 방법은?
#pragma once
#include <cstdio>
#include <cmath>
#include <iostream>
#include <cstdlib>
class tomb {
private:
double *adat;
int szam;
public:
tomb(){
adat = NULL;
szam = 0;
}
tomb(const tomb &u) {
adat = u.adat;
szam = u.szam;
};
int meret()const {
return szam;
}
~tomb() {
delete[] adat;
}
double & operator[](int n) {
return adat[n];
}
const double & operator[](int n)const {
return adat[n];
}
const tomb &operator=(const tomb &a) {
adat = a.adat;
szam = a.szam;
return *this;
}
tomb elso_valahany(int n) {
}
void push_back(const double &a) {
double *tmp;
tmp = new double[szam+1];
for (int i = 0; i < szam; i++)
{
tmp[i] = adat[i];
}
tmp[szam] = a;
delete[] adat;
adat = tmp;
++szam;
}
void Kiir()const {
for (int i = 0; i < szam; i++)
{
std::cout << adat[i] << "\n";
}
}
};
둘 다 잘못되었습니다. –
동적 할당을 사용하는 이유는 무엇입니까 ?? –
다른'tomb'에서 포인터를 복사하는 것은 두 소멸자가'delete []'를 시도 할 때 틀리게 틀립니다. 같은 포인터를 두 번 삭제하면됩니다. –