C++函数调用后不需要的额外按引用传递参数的模式?

C++ pattern for extra pass-by-reference arguments that aren't needed after the function call?

本文关键字:按引用传递 参数 模式 函数调用 不需要 C++      更新时间:2023-10-16

是否有一种首选模式用于在C++中定义一次性变量,以传递给通过引用获取参数的函数?其中一个例子是使用openCV的minmaxLoc函数:

void minMaxLoc(const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, const Mat& mask=Mat())

该函数更改minVal、maxVal、minLoc和maxLoc的值,以对应最小/最大强度值和位置。

我可以为所有参数声明伪变量,但实际上我只需要maxLoc。是否有一种首选的C++模式,使我只声明maxLoc,而不会用我为调用minMaxLoc()而定义的变量的额外声明来扰乱我的代码?

在这种特定情况下,您可以为任何不需要结果的out参数传递nullptr。请参阅OpenCV文档(阅读文档总是很好的)。

如果参数不是可选的,则需要声明局部变量并传递它们的地址。如果您不希望这会打乱您的代码,请编写一个辅助函数来封装混乱的代码。

  1. 如果你可以控制编写函数,你可以使用可变长度的参数围绕传递可变数量的参数

  2. 如果你不这样做,那么一个想法是编写易于使用的包装器,为你创建假人,并将包装器称为