What am doing wrong here with my class?

Well I guess I can do this instead:

class LED {
  
  static byte MODULES; // Number of LED modules connected.  Defined in config.txt.
  
  // Can't declare size of this because number of LED modules can vary.
  //static byte data[LEDMODULES*36] = {0}; // LED data is stored as a string of 12 bit LED values.  There are 3 bytes for every two LEDs.  We store it this way because the data does not need to be altered when we are shifting it out to the TLC5947s.  Modifying the data with bit shifts would be very expensive and there is a lot of data to move.
  static byte* scale; // Scaling factor for LED brightness.  Used when say, you want to be able to adjust the brightness of the powercell without changing all the code that assumes the max desired brightness is 1.0.  Value stored here is scaling_factor*255, where scaling factor is 0..1.
 
  public:

    void set(int, float, float);  
    float get(int);
    
  private:

};

byte LED::MODULES = 2; // Eventually this will be defined in config.txt.
byte * LED::scale = (byte *) malloc(LED::MODULES * 24 * sizeof(byte));

That works. I'm not sure why the other method doesn't work. Maybe the Arduino environment doesn't support C++. But if not, I don't understand why it supports classes.