Przy wywołaniu konstruktora kopiującego program VS 2017 daje wyjątek new_scalar.cpp, ale kod jest z wykładu i mam go przerobić na kolejne zajęcia. Jak to zrobić skoro kod źródłowy nie działa? Destruktor dodałam sama, w metodzie setmail const przy char jest chwilowo do podanych danych
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <cstring>
using namespace std;
class MojaKlasa {
char** email;
int ile;
public:
MojaKlasa(int x);
MojaKlasa(MojaKlasa& mk); // konstruktor kopiujący
~MojaKlasa(); // destruktor
void setemail(const char* adres, int idx) { strcpy(email[idx], adres); }
char* getemail(int idx) { return email[idx]; }
};
MojaKlasa::MojaKlasa(int x) {
email = new char*[ile = x];
for (int i = 0; i < ile; i++) email[i] = new char[100];
}
MojaKlasa::MojaKlasa(MojaKlasa& mk) {
email = new char*[mk.ile];
ile = mk.ile;
for (int i = 0; i < ile; i++) {
email[i] = new char[100];
strcpy(email[i], mk.email[i]);
}
}
MojaKlasa::~MojaKlasa() {
for (int i = 0; i < ile; i++) {
delete[] email[i];
}
delete[] email;
}
int main() {
MojaKlasa MK(3);
MK.setemail("[email protected]", 0);
MojaKlasa MK2(MK);
printf("%s\n", MK2.getemail(0));
MK.setemail("[email protected]", 0);
printf("%s\n", MK2.getemail(0));
return 0;
}