Errors implementing a dynamic matrix class-Collection of common programming errors

Alright, I’m trying to implement a simple 2D matrix class right now. This is what it looks like so far:

template 
class dyMatrix {
    private:
        Type *mat;

        int width, height;
        int length;

    public:
        dyMatrix (int _width, int _height)
            : width(_width), height(_height), mat(0)
        {
            length = width * height;
            mat = new Type[length];
        };

        // ---

        int getWidth() {
            return width;
        };

        int getHeight() {
            return height;
        };

        int getLength() {
            return length;
        }

        // ---

        Type& operator() (int i, int j) {
            return mat[j * width + i];
        };

        Type& operator() (int i) {
            return mat[i];
        };

        // ---

        ~dyMatrix() {
            delete[] mat;
        };
};

To test it, and compare with static multi-dimensional arrays, I wrote the following snippet of code:

#include 
using namespace std;

/* matrix class goes here */

struct Coord {
    int x, y;

    Coord()
        : x(0), y(0)
    {};

    Coord (int _x, int _y)
        : x(_x), y(_y)
    {};

    void print() {
        cout