Я создал массив указателей, который представляет объекты класса с именем Sinif. Sinfi *sinif = new Sinif[5]
Как мы знаем, у каждого элемента есть адрес. В моем домашнем задании, например, я хочу поменять первый элемент sinif со вторым элементом с его адресами. Функция Degistir меняется, но работает только последний написанный. Допустим, мы хотим изменить Sinif 0 с 1, он изменит 0 на 1, но 1 останется без изменений. Вот фотографии для подробного примера.
здесь, Первый пользователь вводит, какой элемент перемещать, чем куда перемещать, и программа ищет его в каждом массиве Sinif, когда находит его. Адреса собираются в temp и temp2, после чего он назначает его.
Sinif *temp;
Sinif *temp2;
void Yonetim::SinifDegistir() {
char DegisecekSinif;
char YeniYeri;
cout << "Degisecek Sinif Adi: "; cin >> DegisecekSinif;
cout << "Yeni Sinif Yerinin Adi: "; cin >> YeniYeri;
for (int i = 0; i < okul->SayacGet(); i++)
{
if (DegisecekSinif == okul->sinif[i].sinif) {
temp = okul->sinif + i;
for (int j = 0; j < okul->SayacGet(); j++)
{
if (YeniYeri == okul->sinif[j].sinif) {
temp2 = okul->sinif + j;
Degis(i, j);
}
}
}
}
}
void Yonetim::Degis(int i, int j) {
(okul->sinif[i]) = *temp2;
(okul->sinif[j]) = *temp;
TabloYazdirma();
}