【C++ Error】error: default argument missing for parameter 6 of ‘cv::Mat

有默認值的情況,默認值只能放在參數列表的最後面,不能放在中間或前面。

在C++頭文件中定義函數的時候,編譯報如下錯誤:

其中頭文件中函數定義如下:

#ifndef __TNNR_H_
#define __TNNR_H_
#include <opencv2/opencv.hpp>
#include <iostream>
#include <cmath>
using namespace std;
using namespace cv;
Mat APGL(Mat &A, Mat &B, Mat &X, Mat &M, Mat &mask, float eps, float lambda);
Mat TNNR(Mat &im0, Mat &mask, int lower_R, int upper_R, float lambda = 0.06);
Mat APGLLRL0PHI(Mat &A, Mat &B, Mat &X, Mat &M, Mat &mask, float eps, float lambda,Mat &J);
Mat TNNRLRL0PHI(Mat &im0, Mat &mask, int lower_R, int upper_R, float lambda = 0.06,Mat &J);
#endif

錯誤的原因就錯在最後一個函數的lambda參數上,這個參數是有默認值的,而在C++中定義函數有開頭那句話:

有默認值的情況,默認值只能放在參數列表的最後面,不能放在中間或前面。

所以解決方法是把默認值去掉或者更改參數的位置即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章