a pointer to a multidimensional array

I don't get that I'm pointing to nowhere.

A pointer is like a card with an address on it. When you dereference the pointer, you look at the address on the card to find where the data is/goes.

Your pointers are like blank cards. When you want to store data at the address on the card, and there is no address on the card, what do you do?

Write there anyway is not the right answer.

You need to make the pointer point to some space where you have permission to write to. That can be a static array, or to a dynamically allocated block of memory. Either way, you get an address on your card, so you CAN store data there.

Pointers are powerful, but they are not magic. Something (that's code you write) needs to make the pointer point somewhere.

By calling ColourBase(); I assume that I create 6 ColourBase() objects and also allocate memory space for the wheelHSBColor[] array since I create an array by doing this in the ColourBase constructor:

You are defining an array, but that array is local in scope (limited to the constructor) and lifetime (it goes away when the constructor ends).