您好我想知道如何在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()的圆括号中? 我一直试图让它工作,但我似乎无法访问该功能。我是新手,所以欢迎任何帮助。
提前致谢!
答案 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个输入参数指定用户名和密码应该是什么。要区分传递的参数,语法需要使用逗号分割它们。您还可以将变量作为参数传递;但是,请确保已初始化这些变量。
这是一篇很长的帖子,所以我可能会犯一些我没注意到的错误。如果我发现任何其他错误,请在评论中告知我。
祝你好运!