是否有可能以某种方式制作将根据第一个参数接受不同参数的函数(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 和模板专业化有关,但可能不是......