我试图看看是否可以以与在C ++中使用setter相同的方式组合多个get值。我正在使用一本书中的例子,它将每个吸气剂放在一个单独的线上。
我用于setter的示例如下:
int getAge(){return age;};
int getWeight(){return weight;}
string getColor(){return color;}
是否可以为多个getter值编写单行代码,例如?
mcrypt()
答案 0 :(得分:6)
当然,按值返回std::tuple
:
std::tuple<int, int, string> getAllTheValues() const
{
return std::make_tuple(age, weight, color);
}
或参考:
std::tuple<int const&, int const&, string const&> getAllTheValues() const
{
return std::tie(age, weight, color);
}
虽然你可能不想真正写出这种东西。只需通过课程本身,并使用你已经拥有的单一的getter。
答案 1 :(得分:2)
这是一个没人提到过的解决方案:
struct values { int age; int weight; string color; };
values getValues() const
{
return { this->age, this->weight, this->color };
}
答案 2 :(得分:0)
您可以通过引用传递而不是返回值,例如:
void getValues(int & yrs, int & lbs, string & clr) const
{
yrs = this->age;
lbs = this->weight;
clr = this->color;
}
答案 3 :(得分:0)
您可以编写一个函数来获取引用作为输入,如下所示:
void getAllTheValues(int& age, int& weight, std::string& color) {
age = this->age;
weight = this->weight;
color = this->color;
}
并像那样使用
int age, weight;
string color;
myClass object();
object.getAllTheValues(age, weight, color);