Using a class instance with Wire.onReceive
A non-static class member function has an implicit ClassName *this parameter inserted as the first parameter in the parameter list.

Because the function prototype required for Wire.onReceive() does not have that parameter specified in its parameter list a non-static member function is not compatible with it.

The same goes for attachInterrupt() and anything else that takes a function pointer.