之前希望使用函数返回多个值的时候,基本都是使用引用来搞定,或者是新写一个结构体,但是现在看来这些方案都显得非常呆板,取用返回值都非常不方便,用过python都知道在python中返回多个值只需要:
def func():
...
return x,y,z
res1, res2, res3 = func()
这样的使用方法比c++原来的方法要高明得多,因此我去寻找是否有更加modern的解决方案,结果还真有,c++用起来瞬间就舒服多了:
class Person {
int age;
string name;
public:
Person(int age= 10, const string& name = "xiaoming") {
this->age = age;
this->name = name;
}
friend ostream &operator<<(ostream &os, const Person &person) {
os << "Person{age: " << person.age << " name: " << person.name << "}";
return os;
}
};
class TestMultipleRet {
// 返回多个值的函数
tuple<int, string, Person> test() {
return {1,"xiaoming", Person()};
}
public:
void client() {
// 获取各个返回值
auto [age, name, person] = test();
cout << age << " " << name << " " << person << endl;
}
};
运行结果:
完美解决问题。
参考博客:https://www.intmian.com/2019/05/25/c++%E5%A4%9A%E8%BF%94%E5%9B%9E%E5%80%BC/