【发布时间】:2018-10-29 15:31:48
【问题描述】:
我创建了一个指针数组,它表示名为 Sinif 的 Class 对象。 Sinfi *sinif = new Sinif[5] 我们知道每个元素都有一个地址。在我的家庭作业中,例如,我想将 sinif 的第一个元素与第二个元素及其地址交换。在 Degistir 函数中它发生了变化,但只有最后一次写入运行良好。假设我们想将 Sinif 0 更改为 1,它将 0 更改为 1,但 1 保持原样。这是详细示例的照片。
在这里,第一个用户输入要移动的元素而不是移动的位置,程序在找到它时在每个Sinif Array中查找它然后将地址收集到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();
}
【问题讨论】:
-
temp和temp2是什么?这里应该使用哪个函数进行交换(我假设Degis,但它看起来不像是正确的交换)? -
如果你想交换一个数组的两个元素,你不交换元素的地址,你交换元素本身。你可以使用
std::swap函数来实现。 -
Sinfi *sinif = new Sinif[5]不是指针数组。 -
@JohnnyMopp 哦,但是它将对象保存在堆中,对吗?我只是想使用数组在堆中创建指向类的指针
-
@Someprogrammerdude 是的,它成功了,非常感谢!!!
标签: c++ pointers data-structures