是否有一种首选模式用于在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()而定义的变量的额外声明而使我的代码混乱?
答案 0 :(得分:3)
在这种特定情况下,您可以将nullptr
传递给您不需要其结果的任何输出参数。请参阅the OpenCV documentation(阅读文档总是好的。)
如果参数不是可选的,则需要声明局部变量并传递其地址。如果您不希望这会使代码混乱,请编写一个辅助函数来封装混乱。
答案 1 :(得分:1)
如果您可以控制编写该函数,则可以使用可变长度参数Passing variable number of arguments around
如果你不这样做,那么一个想法是编写易于使用的包装器,为你创建假人并只需调用包装器