函数调用后不需要的额外的pass-by-reference参数的C ++模式?

时间:2012-03-05 19:38:33

标签: c++ design-patterns pass-by-reference

是否有一种首选模式用于在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()而定义的变量的额外声明而使我的代码混乱?

2 个答案:

答案 0 :(得分:3)

在这种特定情况下,您可以将nullptr传递给您不需要其结果的任何输出参数。请参阅the OpenCV documentation(阅读文档总是好的。)

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

答案 1 :(得分:1)

  1. 如果您可以控制编写该函数,则可以使用可变长度参数Passing variable number of arguments around

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