First of all: It's simple now, I'd move forward.
But if you feel like working on menu today (instead of let's say - gameplay) then instead of
menu object (self) you could pass
game to the interface, or you could even make
game a global variable[1]. The issue there is that you don't know if
game is the only thing you might need and there (you actually could pass anything you need there now) and if
game has a particular methods when in a particular state.
But, I personally like the idea of state passing everything that interface might need - it's easy to reasoning about the interface when it's related to the state (also
parent might be renamed to like
data in case you pass there anything else.
not sure if it's
elegant but it's
simple-and-working
You can also build proper, robust, callback driven event system - please don't go this way - it's a mess.
[1] some people hate global variables and they have good reasons for that, but for a game object I might make an exception