我试图创建一个函数来更改cout和cin,而不复制粘贴代码,但是当我尝试使用它时,它总是输入0
void enterdata(string data, int data2) // Inputing datas
{
cout << "Please Enter your ";
cout << data.c_str() << endl;
cin >> data2;
}
void input1() // Saving/Creating New
{
system("cls");
enterdata("Mobile Number", number);
cout << "Your number is " << number << endl;
}
答案 0 :(得分:2)
您的int data2
变量是enterdata
本地变量。函数返回后将销毁它。
如果要更改传递的变量,则要引用传递的参数:
void enterdata(string data, int& data2)
答案 1 :(得分:1)
调用enterdata()
时必须将值作为参考传递。这是因为您期望该值会更改,然后在以后的调用函数中使用该值。传递为参考将允许您使用具有更改值的变量。否则会导致变量中存在一些默认值或垃圾值。
因此您的代码应像这样更改:
void enterdata(string data, int& data2) // Inputing datas <-- note change here
{
cout << "Please Enter your ";
cout << data.c_str() << endl;
cin >> data2;
}
void input1() // Saving/Creating New
{
system("cls");
enterdata("Mobile Number", number);
cout << "Your number is " << number << endl;
}
答案 2 :(得分:0)
有一些建议将data2
更改为引用或指针。但是还有第二种更简单的方法。只需返回值
int enterdata(string data) // Inputing datas
{
cout << "Please Enter your ";
cout << data.c_str() << endl;
int data2;
cin >> data2;
return data2;
}
void input1() // Saving/Creating New
{
system("cls");
int number = enterdata("Mobile Number");
cout << "Your number is " << number << endl;
}