That is because that line would already call a default constructor (with empty parameter list).
You can’t declare an object variable without an underlying object - only object pointers can be uninitialised.
Adafruit_NeoPixel lib does not expose a public default constructor.
InternetButton.cpp features this line
Adafruit_NeoPixel ring = Adafruit_NeoPixel(PIXEL_COUNT, pin, PIXEL_TYPE);
pin == 3 == D3
you could just comment that line out and put this into the class definition (
Adafruit_NeoPixel ring(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
and move these definitions from the bottom of
InternetButton.h to the top
#define PIXEL_COUNT 11
#define PIXEL_PIN D3
#define PIXEL_TYPE WS2812B
You could either have that
ring variable declared
public, or better have it
private and supply a
public getter method to have “readonly” access to the object variable.