我对 c++ 很陌生,但我无法使它正常工作。抱歉,但我一直使用的语言不能帮助我从内存指针的角度思考,所以也许这是一个愚蠢的问题。
我想将浮点数组作为默认参数传递。像这样:
void getHistogram(const Mat& src, MatND& hist, float range[]=NULL) {
if(range==NULL) {
double maxPixel=0;
minMaxLoc(src, 0, &maxPixel, 0, 0);
range = { 0, maxPixel +1 };
}
// now calculate histogram with the right range
// something something
}
我尝试过一些不同的语法,但我总是在一些错误的前面,比如
histogram.cpp:21: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
histogram.cpp:21: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘float*’ in assignment
编辑(但有内存泄漏):
好的,这就是我以这种方式解决的这个答案:
void imHist(const Mat& src, MatND& hist, float range[]=NULL) {
if(range==NULL) {
double maxPixel=0;
minMaxLoc(src, 0, &maxPixel, 0, 0);
range = new float[2];
range[0] = 0;
range[1] = maxPixel +1;
}
}
一些优点或缺点?
编辑 2
查看接受的答案