私は次のクラス階層を持っています(実際にはもっとたくさんのクラスがあります)、静的ポリモーフィズムを利用するために次を再編成することは可能かどうか疑問に思いましたか?
struct return_val {};
struct base
{
virtual ~base(){}
virtual return_val work(){};
};
struct derivedtype1 : public base
{
return_val work() { return localwork(next_type.work()); }
return_val localwork(return_val& rv0){....}
base* next_type0;
};
struct derivedtype2 : public base
{
return_val work() { return localwork(next_type0.work(),next_type1.work()); }
return_val localwork(return_val& rv0, return_val& rv1){....}
base* next_type0;
base* next_type1;
};
struct derivedtype3 : public base
{
return_val work() { return localwork(next_type0.work(),next_type1.work(),next_type2.work()); }
return_val localwork(return_val& rv0, return_val& rv1, return_val& rv2){.....}
base* next_type0;
base* next_type1;
base* next_type2;
};
大量のプロファイリングを行った後、仮想メソッド呼び出しによるオーバーヘッドは実際には非常に大きく、可能な限り最適化することを望んでいたので、私は尋ねます。