我想在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需要以这种方式声明.
做你想要的一种方法是定义一个模板函数.您可以定义模板,编译器将为您调用它的每种类型编译函数的版本.
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++中的模板编程是一个相当大的蠕虫可以打开,正如其他人所建议的那样,我认为你可能需要重新思考你的方法.