如何根据用户输入将输入变量传递给在许多地方调用的C ++类方法?

时间:2015-06-11 10:52:18

标签: 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);
}

//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,所以,我想知道是否有更简单的方法,通过使用宏或其他东西,但宏在编译时被替换,所以我很困惑

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如何使用开关/案例结构来确定要调用哪个函数以及使用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中的代码放在每个函数中,具体取决于代码的复杂程度。