コンストラクターで「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();
}
}
}
1つのTimeslotオブジェクトを編集すると、それらすべてに変更が加えられます。私はこの問題をグーグルで検索しようとしましたが、私が見つけたすべてのインスタンスは、を使用していない人々でしnew
た。
尋ねられたので、それらすべてに伝播されているタイムスロットオブジェクトに加えている変更は、Timeslotクラスのメソッドを使用してビットマスクのビットにフラグを立てていることです。
void Timeslot::book(int instructor){
bitmask = bitmask | instructormasks[instructor];
}
この質問を投稿してから、はい、各タイムスロットオブジェクトが独自のメモリアドレスを取得しており、どういうわけか、それらすべてでビットマスクにフラグが付けられていることを発見しました。今調べています。