I'm new to using templates and they seem to be angry at me.

I'm just assuming my problem is with the template, because I'm not new to classes and I cant see why my class would be spazzing on me (and this isnt all of the code either).

Code:
#include <iostream>

typedef unsigned short int USHORT;

template< class Datatype >
class Array
{
private:
  Datatype* m_array;
  USHORT m_size;

public:
  Array (USHORT);
  ~Array ();

};

Array::Array (USHORT p_sizeInitial)
{
  m_array = new Datatype[p_sizeInitial];
  m_size = p_sizeInitial;
}

Array::~Array ()
{
  if (m_array != 0)
    delete[] m_array;

  m_array = 0;
}
I get an error before :: in the constructor definition, and a bunch of places afterwards. Do I have to declare the template before functions of the class too? or put the class declaration in a .h and put definitions in the .cpp?

Whats going on!