最初のパラメーターに応じて異なるパラメーターを受け入れる関数 (C++11) を作成することは可能ですか? たとえば、次の動作が必要です。
enum TypeFill{Solid, Gradient1, Gradient2};
void fill(const TypeFill t, Type1 param1 = NULL, Type2 param2 = NULL){
if (t == Solid){
fillSolid(param1);
} else if (t == Gradient1){
fillGradient1(param1, param2);
} else if (t == Gradient2){
fillGradient2(param1, param2);
}
}
private:
fillSolid(Brush b){};
fillGradient1(Color c1, Color c2){};
fillGradient2(Color c1, Color c2){};
呼び出し例:
fill(Solid, Brush(1.0, 0.0, 0.0)){};
fill(Gradient1, Color(1.0, 0.0, 0.0), Color(1.0, 1.0, 0.0)){};
fill(Gradient2, Color(1.0, 0.0, 0.0), Color(1.0, 1.0, 0.0)){};
これが可能かどうかは疑問です。enable_if とテンプレートの特殊化で何かできるかもしれないと思いますが、そうではないかもしれません...