[英]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文档 (最好阅读该文档)。
如果参数不是可选的,则需要声明局部变量并传递其地址。 如果您不想使代码混乱,请编写一个帮助函数来封装混乱的代码。
如果您对编写函数有控制权,则可以使用可变长度参数,在周围传递可变数量的参数
如果您不这样做,那么一个主意是编写易于使用的包装器,为您创建虚拟对象,然后调用包装器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.