Access from multiple source files to one struct array

The struct's layout has to be included in the header file.

struct ResultFieldColor {
  byte resultHue = 0;
  byte resultSaturation = 0;
  byte resultBrightness = 0;
};

You may have heard people say not to do this. What they meant was that function implementations shouldn't be in the header, so if you have a function foo, the header should look like

void foo(int x);

and the C++ file should have the body, as

void foo(int x) {
  // Look at me, I'm a function ^.^
}

But structs/classes need to have their layout available in the header. That includes any function declarations (though not their definitions), any template functions (definitions and declarations), and any instance variables.

Note that there are some tricks to work around this, but they tend to be complicated and carry runtime implications, so it's best to simply include the variables in the header file generally.