C++ 如何将输入变量传递给C++;基于用户输入在许多地方调用的类方法?
我有一个文件,其中定义了多个独立的C风格函数,其中每个函数实例化一个类,并使用某些参数调用该类的方法 我需要从用户那里获取关于调用什么函数以及在该方法中发送什么参数的输入 基本上,我的要求如下:C++ 如何将输入变量传递给C++;基于用户输入在许多地方调用的类方法?,c++,optimization,C++,Optimization,我有一个文件,其中定义了多个独立的C风格函数,其中每个函数实例化一个类,并使用某些参数调用该类的方法 我需要从用户那里获取关于调用什么函数以及在该方法中发送什么参数的输入 基本上,我的要求如下: returnVal func1{ myClass obj; obj.method(x,y); } returnVal func2{ myClass obj; obj.method(x,y); } returnVal func3{ myClass obj; obj.method(x,y); } //
returnVal func1{
myClass obj;
obj.method(x,y);
}
returnVal func2{
myClass obj;
obj.method(x,y);
}
returnVal func3{
myClass obj;
obj.method(x,y);
}
//the value of y will need to change based on user selecting YES or NO
显而易见但乏味的方法是
if(userChoice == YES){
obj.method(x,y);
}
else{
obj.method(x);
}
在每个函数中,但问题是我有太多这样的funcX,所以,我想知道是否有更简单的方法,通过使用宏或其他什么,但是宏是在编译时被替换的,所以我感到困惑
非常感谢您的帮助。您如何使用开关/外壳结构来确定要调用的函数以及要使用的
y
值
returnType (func*)(); // Create a function pointer and use that
switch(userInput){
case 0:
func = &func1;
y = 5;
case 1:
func = &func2;
y = 6;
}
要简化每个函数内的代码,可以使用包装器函数:
void callObjMethod(userInput, MyClass obj, x, y){
userInput == YES ? obj.method(x,y) : obj.method(x);
}
甚至可以根据代码的复杂程度将
callObjMethod
中的代码放在每个函数中。函数可以使用参数。有许多不同的方法可以实现类似的功能,但很难判断您对这些无效函数的要求。你应该发布一些真实的代码来说明你的问题。“但问题是我有太多这样的funcX”这才是你真正的问题。修复它。@TartanLlama我不能在这里发布确切的代码,因为它受版权法的约束。但我面临的问题正是我上面提到的。你能用你所说的不同方法来实现这一点吗?@LightnessRacesinOrbit我不能修改或重构funcX的几个实例,因为所有这些函数都有完全不同的实现,它们之间唯一的共同点是类方法调用,我需要检查n invoke。