>>327 どうしても面倒だったら、こういう手もある。
template< typename t >
std::list< t * > &ty_col() //type collection
{ static std::list< t * > lst; return lst; }
template< typename t >
struct auto_type_collector
{
typename std::list< t * >::iterator itr;
auto_collector(){ ty_col<t>().push_back( (t *)this ); itr=--ty_col<t>().end(); }
~auto_collector(){ ty_col<t>().erase( itr ); }
};
struct my_interface{};
struct game_obj
:public auto_type_collector< game_obj >
,public my_interface, public auto_type_collector< my_interface >{};