>>888
結局のところ、>>816をリファクタリングするのか、
>>816をそのまま実現するかで話は違ってくる。

>>816をそのまま実現するなら、print()の中でswitch〜caseするのが
一番素直な方法だと思うが。

typedef void (hoge::*hoge_print_t)();
static hoge_print_t hoge_print_table[] ={
  &hoge::print_a, &hoge::print_b
};

void hoge::print(){
  this->*(hoge_print_table[ m_num - 1 ])();
}

こんな方法もあるにはあるけど。