class wabbit { private: typedef game::terminal_t terminal_t; terminal_t::iterator it; terminal_t::value_type c; //no longer has a game * virtual game *get_game() const = 0; public: wabbit(arguments for constructor) {game_get()->push_back(this);} //etc. };