You retrieve the button bounding rect, before the button (sprite) has a texture, thus the button bounding rect is still (0, 0, 0, 0).
I recommend you study again how member variables are initialized and what the difference is between initialization list and in-class initialization. And think about what can already be initalized before the constructor gets "called".