クラスのメソッドを関数ポインタみたいに出来ないでしょうか
具体的には、コンストラクタでメソッドの飛び先を変更して、
クラスの実行先ではそれを意識しないですむというものです

class hoge {
public:
void print();
 void print_a();
void print_b();

 hoge(int num) {
  // ここでprintメソッドの実行先をprint_aまたはprint_bに変更
}

};

hoge h(1), hh(2);
h.print(); // print_aが実行される
hh.print(); // print_bが実行される