CS35 Queue ADT

queue.h
#pragma once
/* Copyright (c) 2017
   Swarthmore College Computer Science Department, Swarthmore PA
   A. Danner, M. Gagne, J. Brody, Z. Palmer, A. Soni
   Distributed as course material for Fall 2017
   CPSC 035: Data Structures and Algorithms
 */
 
/**
 * The Queue is a pure virtual (abstract) interface of a queue.  Queue
 * implementations should inherit from and implement this interface.
 * @tparam T The type of elements stored in the queue.
 */
template <typename T>
class Queue {
public:
    virtual ~Queue() { };

    /**
     * Adds an element to the queue.
     * @param item The element to enqueue.
     */
    virtual void enqueue(T element) = 0;

    /**
     * Removes an element from the queue.
     * @return The element that was dequeued.
     * @throws runtime_error If the queue was empty.
     */
    virtual T dequeue() = 0;

    /**
     * Determines the size of this queue.
     * @return The number of elements in the queue.
     */
    virtual int getSize() = 0;

    /**
     * Determines whether this queue is empty.
     * @return true if the queue is empty; false if it is not.
     */
    virtual bool isEmpty() = 0;

    /**
     * Retrieves the front element from the queue (without removing it).
     * @return The next element in the queue.
     * @throws runtime_error If the queue is empty.
     */
    virtual T getFront() = 0;

    // You can safely ignore the following code.  This eliminates some default
    // class routines, preventing you from using them accidentally.
    // Specifically, we are disabling the use of the copy constructor and the
    // copy assignment operator.  You can read more here:
    //   http://www.cplusplus.com/articles/y8hv0pDG/
public:
    Queue() { }
private:
    Queue(const Queue& other) = delete;
    Queue& operator=(const Queue& other) = delete;
};