繁体   English   中英

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

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

有没有在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. 如果您不这样做,那么一个主意是编写易于使用的包装器,为您创建虚拟对象,然后调用包装器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM