Как я могу «нажать» и «выскочить» из очереди классов?

Я пишу программу, которая является симуляцией сервисных заданий процессором многопользовательского компьютера. Я определил класс под названием job и я создал две очереди этого типа, одна waitQueue а другой CPUqueue, Я пытаюсь заселить CPUqueue с данными из waitQueue вытолкнув его из waitQueue и толкать его в CPUqueue — это цель, однако. Я не могу написать эту часть без ошибок, говоря error: request for member ‘push’ in ‘waitQueue’, which is of non-class type ‘std::queue<job> [10]’ (также для других вызовов функций. Пожалуйста, помогите ..!

Вот файл main.cpp, над которым я работал:

#include <iostream>
#include <string>
#include <stdlib.h>
#include <queue>
#include "job.cpp"
using namespace std;

int main()
{
int second = 0, jobsCompleted = 0, jobsToComplete = 0, probUser = 0, probability;
long id;
jobType_t job_type;
int inWQ, outWQ, inCPUQ, outCPUQ, required, given, jobTypeInt;
queue<job> CPUqueue[10], waitQueue[10];

srand(time(NULL));

cout << "Enter how many jobs need to be completed: ";
cin >> jobsToComplete;
cout << endl <<  "Enter the probability that a new job is created: ";
cin >> probUser;
cout << endl;

while(jobsCompleted < jobsToComplete)
{
second++;
probability = rand() % 100 + 1;

if(probability > probUser)
{
cout << "Enter new JOB ID: ";
cin >> id;
jobTypeInt = rand() % 1 + 1;
if(jobTypeInt = 1) job_type = IO_bound;
else job_type = CPU_bound;
required = rand() % 10;
inWQ = second;
job *newJob = new job(id, job_type, inWQ, outWQ, inCPUQ, outCPUQ, required, given);
waitQueue.push(newJob);
}
while(!CPUqueue.isFull())
{
waitQueue.back();
job *temp = waitQueue.pop();

CPUqueue.push(temp);
}
}

return 0;
}

БЛАГОДАРЮ ВАС!

0

Решение

queue<job> CPUqueue[10], waitQueue[10];

Это создает два массива из 10 очередей. Это, вероятно, не то, что вы хотите.

Пытаться :

queue<job> CPUqueue, waitQueue;
3

Другие решения

У вас есть массив очередей, а не очередь, и push не работает на массивах.

0

в дополнение к ответу @ otibom:

non-class type ‘std::queue<job> [10]’

означает только это: waitQueue объявлен как массив. Объекты в массиве queueс, но достоверные нет.

0
По вопросам рекламы [email protected]