Передача по ссылке действительно является правильным ответом, однако C ++ sort-to позволяет возвращать многозначные значения с использованием std::tuple
и (для двух значений) std::pair
:
#include <cmath>
#include <tuple>
using std::cos; using std::sin;
using std::make_tuple; using std::tuple;
tuple<double, double> trans(double x, double y, double theta)
{
double m = cos(theta)*x + sin(theta)*y;
double n = -sin(theta)*x + cos(theta)*y;
return make_tuple(m, n);
}
Таким образом, вам вообще не нужно использовать out-parameters.
На стороне вызывающего абонента вы можете использовать std::tie
для распаковки кортежа в другие переменные:
using std::tie;
double xc, yc;
tie(xc, yc) = trans(1, 1, M_PI);
// Use xc and yc from here on
Hope это помогает!