I mean I used Serial.print in the main loop, in the class functions, and in the constructor…
It's my understanding that your constructor can't do much because the Arduino hardware isn't initialized yet. Printing is a no-no, millis() isn't initialized, and so on. Perhaps someone more familiar with the issue can jump in with more if I've got this wrong.
You could use a .begin() method, like Serial does, to work around this.