Type Colours (an enum) is not compatible with type Colour2DArray (a 2D array of enums). Think about it a bit and/or try compiling with the -Wall option. Hint: there is something wrong with your definition of theArray's type.
Unrelated, but just as important, is your for loops in the constructor. Why are you using 20 instead of HLINES and VLINES?
Now, you've got a type named "Colour2DArray" (which is a type just like any other: int, char, float, etc).
Since the type of Colour2DArray is an array of VLINES by HLINES Colours, you can use it to declare those arrays. So instead of
Colours theArray[VLINES][HLINES];
you can just write
Colour2DArray theArray;
Either definition declares "theArray" as an array of VLINES by HLINES Colours. I hope that makes sense.
To fill your array, do just like you are doing. Except, how do you know that VLINES is always going to be equal to 20? What if, a month from now, your professor asks you to modify the assignment to have a larger array?
You'll open it up and change VLINES,HLINES to something else (say, 100,100). Everything works great except your constructor only sets the first 20 by 20 colors to black and leaves everything else some random value...