如何将位置返回为x,y,z
问题描述:
如何使这个返回x和y而不是其中之一? 在我的Location类中,我保护了名为x_pos
和y_pos
的数据。如何将位置返回为x,y,z
void Location::getXY(double& x, double& y) const {
x_pos = x;
y_pos = y;
return x, y;
}
答
您可以返回std::pair
。我假设你想通过价值返回而不是通过引用在这里。
#include <utility> // for std::pair
// if using c++14, else use std::pair<double,double> as return type
auto Location::getXY(double& x, double& y) const {
x_pos = x;
y_pos = y;
return std::make_pair(x,y);
}
虽然我必须指出,这个函数没有逻辑意义,但是您返回的是您传递的值,而不用修改它们。
+0
这里你实际上不需要'decltype(auto)','auto'就足够了。 – skypjack
答
你可能意味着
void Location::getXY(double& x, double& y) const {
x = x_pos;
y = y_pos;
}
这样你存储Location
的内部x_pos
和y_pos
中提供的位置。您不需要return
任何函数返回void
(实际上,除了void
本身,您不能返回任何内容)。 正如大家所说,返回std::pair
可能是一个更好的主意。
std :: pair或std :: tuple会这样吗?否则只能引用变量的输入和输出? – Niall
返回一个'std :: pair'?返回一个'std :: tuple'?返回一个'std :: array'?返回一个'std :: vector'?返回结构? –
或者,因为您将'x'和'y'作为非常量引用传递给它们? –