我有一堆函数读取完全相同,除了一行代码,根据输入参数的类型不同而不同。代码相似但不完全相同的代码模板?
例子:
void Func(std::vector<int> input)
{
DoSomethingGeneral1();
...
DoSomethingSpecialWithStdVector(input);
...
DoSomethingGeneral2();
}
void Func(int input)
{
DoSomethingGeneral1();
...
DoSomethingSpecialWithInt(input);
...
DoSomethingGeneral2();
}
void Func(std::string input)
{
DoSomethingGeneral1();
...
DoSomethingSpecialWithStdString(input);
...
DoSomethingGeneral2();
}
我不知道如何能使用类似模板的机制避免这种重复。如果我正确理解“专业化”,它不会避免将专业功能的代码重复两次?
我们不能采取大胆的步骤除非知道DoSomethingSpecial真的应该做什么。你能提供更多细节吗?如果不适合模板化它,我们将不得不采取一些措施使其在一般接口内部进行调整,并从调用者的角度对其进行调整。 – sarat 2011-06-06 07:00:57