Я получаю сообщение об ошибке, которое говорит, что const PCB не может преобразовать в * PCB и единственный способ, которым я могу объявить объект NULL с указателем. Может ли кто-нибудь помочь мне разобраться с проблемой. Я помещаю // где происходит ошибка. Я просто пытаюсь сохранить блок управления процессом с наивысшим приоритетом в CPU для первого «if-оператора», когда он является NULL или пустым », а второй сравнивает верхнюю часть очереди приоритетов с cpu и preemptive, если ready_queue.top выше, чем процессор. Пытались с помощью BOOL IsEmpty() и другие вещи, но ничего, кажется, работаетУстранение ошибки Const PCB не может конвертироваться в * PCB
struct PrCB
{
int PrID;
int PrSize;
int prior;
int sumMem= 0;
bool operator < (const PrCB & a)
{
return prior < a.prior;
}
bool operator > (const PrCB & a)
{
return prior > a.prior;
}
};
struct compare
{
bool operator()(const PrCB &a,const PrCB &b)
{
return a.prior < b.prior;
}
};
int main()
{
int pid = 0;
char inter;
PrCB pcb;
PrCB cpu;
priority_queue<PrCB, vector<PrCB>,compare> ready_queue;
while(true)
{
cin >> inter;
if(inter == 'N')
{
pcb.PrID = pid;
cout << "How much memory space?" << endl;
cin >> pcb.PrSize;
cout << "What is the Priority?" << endl;
cin >> pcb.prior;
ready_queue.push(pcb);
pid++;
//if(cpu == NULL)
{
cpu == ready_queue.top();
ready_queue.pop();
}
//if(cpu < ready_queue.top())
{
ready_queue.push(cpu);
//cpu = ready_queue.top();
ready_queue.pop();
}
}
}
}
так, если бы я должен был сделать bool operator == (PrCB & a), если (a.priority == NULL) что-то вернуть? и я не понимаю, что вы подразумеваете под свойством priority_queue.top() или у вас означает ready_queue.top()? Спасибо за помощь ! – user58504
'a.priority' имеет тип' int', что означает, что вам не нужно проверять 'NULL'. Я думаю, вы можете быть смущены тем, что является указателем, а что нет, 'int' не является указателем. 'ready_queue' имеет тип' priority_queue', так что да, вы можете прочитать его как 'ready_queue.top()'. – user2205930
ahhh okay, поэтому, если мы сделаем оператор bool == (PrCB & a), что это значит, чтобы возвратить причину, я хочу использовать if (cpu == empty или NULL), переместить ready_queue.top() в CPU, что и есть проблема с: S – user58504