如何在我的类中的参数内调用我的函数(C ++)

时间:2017-03-03 00:24:13

标签: c++ function

您好我想知道如何在main中的类中调用函数?

class processChoice {
public:
    void processInput(string, int, string, int);
};

void processChoice::processInput(string processInput_UN, 
                                 int processInput_PC, 
                                 string initial_UN, 
                                 int initial_PC) {
    for (; (processInput_UN != initial_UN) || (processInput_PC != initial_PC);
        cout << endl) {

        cout << "Enter your username: " << flush;
        cin >> initial_UN;

        cout << "Enter your 4 digit pincode: " << flush;
        cin >> initial_PC;

        cout << endl;

        if ((processInput_UN == initial_UN) && (processInput_PC == initial_PC)) {
            cout << "Access granted!" << endl;
        } else {
            cout << "Username and/or pincode doesn't match, try again..."
                << endl;
    }
}

int main() {

    userPinchoice Choice;
    Choice.chooseUsername();
    Choice.choosePincode();

    cout << endl;

    initial Values;
    Values.initialUsername();
    Values.initialPincode();

    processChoice Input;
    Input.processInput();

    return 0;

我想把什么放在Input.processInput()的圆括号中? 我一直试图让它工作,但我似乎无法访问该功能。我是新手,所以欢迎任何帮助。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您的大部分问题都在于课程processChoice。以下是一些此类错误:

首先,类中函数声明中指定的参数有问题:

 void processInput(string, int, string, int);

在这里,您只指定了4种数据类型,而不是变量。请记住,这些是存储从另一个函数传递的数据的变量。为此,您需要在上面的行中声明这些变量,具有可在函数内标识的特定名称的变量。你应该在你的函数声明中有这一行:

 void processChoice::processInput(string processInput_UN, int processInput_PC, string initial_UN, int initial_PC)

这带来了另一个问题。您的函数头在声明时是不同的,并且它的头在定义时是不同的。编译器将其视为2个不同的函数。因此,在声明并定义函数时,应保持函数headeer相同。

其次,你的函数中的for循环有语法错误:

 for (; (processInput_UN != initial_UN) || (processInput_PC != initial_PC);
    cout << endl) {

首先,从循环的条件语句的语法判断,它应该是一个do-while循环,而不是for循环。其次,cout << endl;不应该在for循环的条件语句中;它应该与函数的其余部分一起实现。第三,你不要在你的条件陈述结束时加上分号;它告诉编译器这是一个没有正文的空循环。你的循环应该是这样的:

 do
 {
     cout << endl; // this is where you put the cout statement

     // add rest of function code here
 }
 while ((processInput_UN != initial_UN) || (processInput_PC != initial_PC))

另外注意,为什么你的功能需要4个输入参数?您将引脚号和用户名作为用户的输入,无需2个参数。类似的东西:

 string initial_UN;
 int initial_PC;

如果你在你的函数中声明了这个,就在我上面建议的do-while循环之前,那么这就消除了这2个变量作为参数。

现在,为了回答你的问题,如果我们有以下声明:

  Input.processInput();

然后我们需要传递4个参数(如果你按照我上面的注释2),它就是这个代码行中函数名旁边的括号。要将值传递给函数,只需执行以下操作(我只在这里传递2个参数,您可以传递您在yout类中定义的参数数量,而不是更少或不更多):

 Input.processInput("Username", "password");

有2个输入参数指定用户名和密码应该是什么。要区分传递的参数,语法需要使用逗号分割它们。您还可以将变量作为参数传递;但是,请确保已初始化这些变量。

这是一篇很长的帖子,所以我可能会犯一些我没注意到的错误。如果我发现任何其他错误,请在评论中告知我。

祝你好运!