Okay I ran into some trouble, but it doesnt seem to bad. It's just that the compiler is saying InstructionQueue has not been declared in my Main. Here is the code:
Main
Code:
#include <cstdlib>
#include <iostream>
#include "InstructionQueue.h"
using namespace std;
int main(int argc, char *argv[])
{
InstructionQueue iq;
Instruction i1("1", 1);
system("PAUSE");
return EXIT_SUCCESS;
}
Instruction.h
Code:
class Instruction{
public:
Instruction();
Instruction(std::string s, int p);
std::string ins_str;
int priority_level;
int p_id;
friend bool operator < (const Instruction& i1, const Instruction& i2);
};
Instruction.cpp
Code:
#include "Instruction.h"
Instruction::Instruction():ins_str(""),priority_level(1),p_id(0){ }
Instruction::Instruction(std::string s, int p):ins_str(s),priority_level(p),p_id(0) { }
bool operator < (const Instruction& i1, const Instruction& i2){
if(i1.priority_level != i2.priority_level)
return (i1.priority_level < i2.priority_level);
else
return(i1.p_id < i2.p_id);
}
InstructionQueue.h
Code:
#include "Instruction.h"
#include <queue>
#ifndef INSTRUCTION_H
#define INSTRUCTION_H
class InstructionQueue{
public:
InstructionQueue();
void push(Instruction i);
void pop(){q.pop();}
bool empty(){return q.empty();}
Instruction top(){return q.top();}
private:
priority_queue< deque<Instruction> > q;
int id;
}
#endif
InstructionQueue.cpp
Code:
#include "InstructionQueue.h"
InstructionQueue::InstructionQueue():id(0){ }
void InstructionQueue::push(Instruction i){
i.p_id = id++;
q.push(i);
}
And here is the exact error from Dev C++:
Code:
C:\Dev-Cpp\main.cpp In function `int main(int, char**)':
10 C:\Dev-Cpp\main.cpp `InstructionQueue' undeclared (first use this function)