私はC ++にまったく慣れていないので、これを機能させることができません。申し訳ありませんが、私は常にメモリポインタとその観点から考えるのに役立たない言語を扱ってきたので、これはばかげた質問かもしれません.
float 配列をデフォルト パラメータとして渡したい。このような:
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
受け入れられた答えを見る