如果/切换里面的声明

Ger*_*rdo 2 c++

我想在C++中做这样的事情:

if(){
    int a;
} else if(){
    char a;
} else {
    double a;
}

f(a);
Run Code Online (Sandbox Code Playgroud)

但是我从编译器得到一个错误,指出a未在此范围内声明.我需要做一个条件声明,我该怎么做?

非常感谢

编辑:由于问题较大,我无法在条件内移动函数:f(a,b,c); 其中a,b和c需要以这种方式声明.

Joh*_*ter 5

做你想要的一种方法是定义一个模板函数.您可以定义模板,编译器将为您调用它的每种类型编译函数的版本.

template <typename T_my_type> T_my_type MyTemplateFunction(T_my_type a)
{
  a++;
  std::cout << a;
  return a;
}

if(){
    int a;
    MyTemplateFunction(a);
} else if(){
    char a;
    MyTemplateFunction(a);
} else {
    double a;
    MyTemplateFunction(a);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下T_my_type,模板参数将被隐式替换为您调用函数的参数的类型.

C++中的模板编程是一个相当大的蠕虫可以打开,正如其他人所建议的那样,我认为你可能需要重新思考你的方法.