如何将位置返回为x,y,z

问题描述:

如何使这个返回x和y而不是其中之一? 在我的Location类中,我保护了名为x_posy_pos的数据。如何将位置返回为x,y,z

void Location::getXY(double& x, double& y) const { 
    x_pos = x; 
    y_pos = y; 
    return x, y; 
} 
+0

std :: pair或std :: tuple会这样吗?否则只能引用变量的输入和输出? – Niall

+2

返回一个'std :: pair'?返回一个'std :: tuple'?返回一个'std :: array'?返回一个'std :: vector'?返回结构? –

+0

或者,因为您将'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_posy_pos中提供的位置。您不需要return任何函数返回void(实际上,除了void本身,您不能返回任何内容)。 正如大家所说,返回std::pair可能是一个更好的主意。