I don't think your pointer is pointing at anything.
Wouldn't it be more like below, based on what A Beginner's Guide to Pointers - CodeProject says
byte *layerPointer;
void CubeControl::writeCube(cubeStep thisCube)
{
int startTime = millis();
layerPointer = new byte;
*layerPointer = 0;
while(millis()-startTime <= thisCube.stepDuration)
{
for (int thisLayer = 0; thisLayer < numLayers; thisLayer++)
{
*layerPointer = &thisCube.layer[thisLayer][0];
writeLayer(*layerPointer, thisLayer, thisCube.layerDuration);
}
}
Serial.println(*layerPointer);
return;
}