如何在新设计中迁移需要几个额外参数的函数

Pro*_*mer 0 c++

我们有一个现有的类方法,它接受两个字符串作为参数:

bool myfunc(const std::string& var1, const std::string& var2)
Run Code Online (Sandbox Code Playgroud)

在许多地方引用相同的功能.现在我需要修改它以传递另外两个整数参数:

bool myfunc(const std::string& var1, const std::string& var2, int& var3, int& var4)
Run Code Online (Sandbox Code Playgroud)

我尝试使用varadic参数/函数模板,但在这两种情况下我都需要修改现有的实现 - 也许我不确定具体的实现.我也希望不使用默认参数 - 我们使用的是C++ 11.

有没有办法创建一个可以通过传递两个或四个参数调用的函数模板?

Sil*_*olo 5

我觉得这里的模板太过分了.如果您想要一个函数的两个不同的有效版本,只需创建该函数的两个不同的有效版本.

bool myfunc(const std::string& var1,
            const std::string& var2) {
  // Original implementation
}

bool myfunc(const std::string& var1,
            const std::string& var2,
            int& var3,
            int& var4) {
  // Awesome, cool stuff :)
}
Run Code Online (Sandbox Code Playgroud)

如果两者做同样的事情(可能是前者假装它有默认参数等),你可以让它们委托.

bool myfunc(const std::string& var1,
            const std::string& var2) {
  return myfunc(var1, var2, some_value, some_other_value);
}

bool myfunc(const std::string& var1,
            const std::string& var2,
            int& var3,
            int& var4) {
  // Awesome, cool stuff that works in general :)
}
Run Code Online (Sandbox Code Playgroud)