У меня есть функция, которая добавляет процессы к вектору объекта Process
.
У меня есть личный член с именем Process * CPU
, и моя цель - указать ему первый процесс, который я добавляю в вектор. Я могу продолжать добавлять больше процессов, но процессор все равно должен указывать на первый.
void DiskSched::addProcess() {
if (isEmpty()) {
// If CPU is empty, the new process will automatically go to the CPU
Process newProcess;
newProcess.setProcessProperties(0,Header::PID,++Header::TIME);
CPU = &newProcess; // assigning the first process to the CPU
cout << endl;
cout << "Process object: " << newProcess.getPageNum() << " "<< newProcess.getPID() << " " << newProcess.getTimeStamp() << endl;
cout << "CPU pointer: " << CPU->getPageNum() << " " << CPU->getPID() << " " << CPU->getTimeStamp() << endl;
}
else {
// ....
}
}
«Указатель процессора» будет таким же, как у объекта Process, потому что он находится в функции, и это то, что я хочу. Я получаю:
0 1 1
0 1 1
У меня есть еще одна функция, которая просто выводит свойства процессора:
void DiskSched::currentCPU() {
cout << endl;
cout << "Page #: " << CPU->getPageNum() << endl
<< "PID: " << CPU->getPID() << endl
<< "Timestamp: " << CPU->getTimeStamp() << endl;
}
Когда я вызываю currentCPU, свойства моего указателя процессора не совпадают. Я получаю:
Page #: 1595623976 (should be 0)
PID: 32767 (should be 1)
Timestamp: 1595624103 (should be 1)
Я полагаю, что когда я присваиваю CPU
адресу первого объекта в моем векторе, он предназначен только для вызова этой функции и фактически не меняет мой частный указатель CPU
. Как я могу это исправить?