我希望能够有一个函数,只需从用户获取两个输入值,并返回要使用的main函数的值.
我希望值a和b只驻留在getvals函数中,并作为x和y传递给main函数.
我想我可能会在这里采取错误的方式,因为我经常搜索并找不到任何类似的方法来做到这一点,但任何帮助都会受到赞赏.
#include <iostream>
using namespace std;
int x = 100;
int y = 42;
int result1;
int result2;
int a;
int b;
int getvals(int,int)
{
cout << "input value a ";
cin >> a;
cout << "input value b ";
cin >> b;
return a,b;
}
int main()
{
getvals(x,y);
result1 = x + y;
cout << "\n\n";
cout << " x + y = " << result1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您只能从函数返回一个值.幸运的是,您可以在结构或类中包装两个值,并将其作为一个对象返回.这正是std::pair为此而设计的.
std::pair<int,int> getvals()
{
std::pair<int,int> p;
cout << "input value a ";
cin >> p.first;
cout << "input value b ";
cin >> p.second;
return p;
}
int main()
{
std::pair<int,int> p = getvals();
int result1 = p.first + p.second;
...
}
Run Code Online (Sandbox Code Playgroud)
C++ 11引入了更一般的std::tuple,允许任意数量的元素.
std::tuple<int,int> getvals()
{
int a,b;
cout << "input value a ";
cin >> a;
cout << "input value b ";
cin >> b;
return std::make_tuple(a,b);
}
int main()
{
int x,y;
std::tie(x,y) = getvals();
...
}
Run Code Online (Sandbox Code Playgroud)