【发布时间】:2023-04-09 15:41:01
【问题描述】:
在我的头文件中我声明了结构
typedef struct _PreprocessedImage
{
cv::Rect straight;
cv::Rect diagonal;
bool empty = true;
...
...
} PreprocessedImage;
然后我用方法创建类
std::vector<float> processData(cv::Mat &image, bool drawRegions = false, PreprocessedImage &preproc);
.
尝试编译得到
“错误:参数 3 缺少默认参数”
但是当我尝试用默认值声明方法时,像这样:
std::vector<float> processData(cv::Mat &image, bool drawRegions = false, PreprocessedImage &preproc = PreprocessedImage());
.
我明白了
“错误:类型的非常量引用的无效初始化 'PreprocessedImage& {aka _PreprocessedImage&}' 来自类型的右值 'PreprocessedImage {aka _PreprocessedImage}'"
我该如何解决?
【问题讨论】:
-
具有默认值的参数必须全部出现在参数列表的末尾。
-
不要在
C++中使用typedef struct ... name。就做struct name -
不相关:以下划线后跟大写字母开头的标识符是实现保留的,您不能在代码中使用它们。