我在构造函数中创建了一个指向“Timeslot”对象的 7×7 指针数组,使用 new,如下所示:
Timeslot ***schedule;
Schedule::Schedule(void)
{
schedule = new Timeslot**[DAYS]();
for(int day = 0; day < DAYS; day++){
schedule[day] = new Timeslot*[TIMESLOTS]();
for(int time = 0; time < TIMESLOTS; time++){
schedule[day][time] = new Timeslot();
}
}
}
当我编辑一个时隙对象时,对所有对象都进行了更改。我试图用谷歌搜索这个问题,但我能找到的所有实例都是人们不使用new
.
既然有人问我,我对传播到所有这些时间段对象的更改是我使用 Timeslot 类的方法在位掩码中标记了一点。
void Timeslot::book(int instructor){
bitmask = bitmask | instructormasks[instructor];
}
自从发布此问题以来,我发现是的,每个时隙对象都获得了自己唯一的内存地址,并且以某种方式在所有时隙中都标记了位掩码。我现在正在调查它。