I have an Abstractqueue and I want to inherit it's members to another child class. When I try to create the child object in my main file I keep getting an undefined reference to `AbstractQueue::AbstractQueue()'
enter code here
#ifndef ABSTRACT_QUEUE_H
#define ABSTRACT_QUEUE_H
#include <iostream>
template <class Type>
class AbstractQueue
{
protected:
    Type *items;
    int front;
    int back;
    int capacity;
    int count;
private:
    // data goes here
public:
    AbstractQueue(int s);
   AbstractQueue(void);
   ~AbstractQueue(void);
   bool empty();
   int size();
   Type frontele(); //throw(exception) {}
   Type dequeue(); //throw(exception) {}
   void enqueue ( Type e );
};
template <class Type>
AbstractQueue<Type>::AbstractQueue(int s){
    items = new Type[s];
    front = 0;
    back = 0;
    capacity = s;
    count = 0;
    std::cout << "made the abstract queue!" << std::endl;
}
template <class Type>
AbstractQueue<Type>::~AbstractQueue() {
    delete[] items;
    std::cout << "destructor called" << std::endl;
}
#endif
IncrementalQueue.h
#ifndef _INCREMENTALQUEUE_H
#define _INCREMENTALQUEUE_H
#include "Queue.h"
//#define SIZE = 10
#include <iostream>
template <class Type>
class IncrementalQueue : public AbstractQueue<Type>{
    public:
        //AbstractQueue(void);
       //~AbstractQueue(void);
       IncrementalQueue(int s);
       bool empty();
       int size();
       Type frontele(); //throw(exception) {}
       Type dequeue(); //throw(exception) {}
       void enqueue ( Type e );
    //~IncrementalQueue(void);
    //AbstractQueue(void);
    //AbstractQueue(int size);
    //bool empty(void) ;
        /*if (count == 0) {
        return true;
        }
        else {
        return false;
        }*/
    //int size(void);
    //Type front throw(exception) {}
    //Type dequeue(); //throw(exception) {}
    //void enqueue ( Type e ) ;
        //IncrementalQueue(int size);
};
template <class Type>
IncrementalQueue<Type>::IncrementalQueue(int s){
    this->items = new Type[50];
    this->front = 0;
    this->back = 0;
    this->capacity = 50;
    this->count = 0;
    std::cout << "made the incremental queue!" << std::endl;
}
#endif
main.cpp
#include "Queue.h"
#include "IncrementalQueue.h"
int main(){
    IncrementalQueue<int> incqueue(50);
    return 0;
}
I'm a little rusty with templates so I've been struggling at it for a couple of hours. does anybody have any clues on where my code can be failing?