缩短C++函数输入参数?

Shorten C++ function input parameters?

我们小组最近转向了 C++。我的主管很友好地提供了一个由一堆 类 和相关方法组成的模板。我发现的问题是大多数方法需要很多输入参数,像这样:

void AdvectionReactionDiffusion::boundary(const arma::Col<double>& n, const arma::Col<double>& u, const arma::Col<double>& uhat, const arma::Col<double>& fhat, arma::Col<double>& fb, arma::Mat<double>& fb_u, arma::Mat<double>& fb_uhat, arma::Mat<double>& fb_fhat) const {}

那么,为了更好的可读性和更少的人为错误,有什么好的方法可以在不破坏当前代码结构的情况下缩短这些输入?

我来自 Python 背景,我将在 Python 中做的是将相关输入包装在命名元组中并将其扔给函数。但是我不知道如何在 C++ 中应用类似的技巧。

如果您阅读 Col and Mat 上的文档,您会发现

将它与 cpp 文件中的 using namespace arma; 相结合( 永远不会在 header!!! 中)你可以做到

void AdvectionReactionDiffusion::boundary(const vec& n,
                                          const vec& u,
                                          const vec& uhat,
                                          const vec& fhat,
                                          vec& fb,
                                          mat& fb_u,
                                          mat& fb_uhat,
                                          mat& fb_fhat) const {}

你标记了这个问题 所以除了输出参数你还可以 return a std::tuple.

std::tuple<vec,mat,mat,mat>
AdvectionReactionDiffusion::boundary(const vec& n,
                                     const vec& u,
                                     const vec& uhat,
                                     const vec& fhat) const {}

然后您可以使用 std::tie

解压缩
std::tie(fb, fb_u, fb_uhat, fb_fhat) = ARD.boundary(n,u,uhat,fhat);

你当然可以对输入参数做同样的事情。