can anyone tell me why i get this error when i run this code?

error:

/tmp/cclpzH3U.o: In function `main':
/tmp/cclpzH3U.o(.text+0x77): undefined reference to `queuea::queuea[in-charge](int)'
collect2: ld returned 1 exit status



Code:

//queue.h

#define T int

class queue {
public:
virtual bool isempty()=0;
virtual void enqueue(T) = 0;
virtual T dequeue() = 0;
};


//queuea.h

#include "queue.h"
#ifndef QUEUEA_H
#define QUEUEA_H

using namespace std;

class queuea : public queue{
T *a;
int in, out;
int full;

public:
queuea();
queuea(int size);
~queuea();
bool isempty();
void enqueue(T data);
T dequeue();

};



#endif

//queuea.C

#include "queuea.h"

queuea :: queuea(){
a = new T[10];
in = out = -1;
full = 10;
}

queuea :: queuea(int size){ //constructor
a = new T[size];
in = out = -1;
full = size;
}

queuea :: ~queuea(){ //destructor
delete [] a;
cout << "queue is deleted";
}


bool queuea :: isempty(){ //check to see if queue is empty
return out == -1;
}

void queuea :: enqueue(T data){ //add a value to the queue
if (in == full-1 || in == -1){ //error trapping for ring buffer
a[0] = data;
in = 0;
if (out == -1)
out = 0;
}

else a[++in] = data;
}

T queuea :: dequeue(){ //take out value from queue
T temp;
temp = a[out];

if (out == in) //error trapping for ring buffer
in = out = -1;
else if (out == full-1)
out = 0;
else out++;

return temp;
}




//dumpfifo.C

#include <iostream>
#include "queuea.h"
//#include "queuel.h"

using namespace std;

void queuedump(queue *qptr){
while(!qptr -> isempty())
cout << qptr -> dequeue(); // print out values in queue
}

int main(){
queue *qptr = new queuea(10); // make new queue array
for(int i=0; i<14; i++) qptr -> enqueue(i); // fill queue
queuedump(qptr); //empty queue

return 0;
}





(By the way, sorry about the style, my instructor likes it "HIS" way with the .C and the brackets)