错误:"varName"未在此范围内声明

error: 'varName' was not declared in this scope

本文关键字:范围内 声明 varName 错误      更新时间:2023-10-16

我想在我的图像中找到最大的轮廓(使用opencv和C++)。我读过这个帖子:在OpenCV中查找轮廓?和Draw使用areaContours(OpenCV)连接的最大元素,但我得到了错误:"varName"没有在这个范围内声明,这意味着编译器认为我没有声明那个变量,对吗?所以我的代码片段:

    threshold(Img, Img, t, 255, CV_THRESH_BINARY_INV);
    vector<vector<Point>> varName;
    findContours(Img, varName, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);

我得到了这个错误:

   D:OpencvWorkspace....|50|error: 'varName' was not declared in this scope|

第50行是这个代码:

    vector<vector<Point>> varName;

我的问题。为什么编译器问这个变量没有在我声明那个变量的那一行声明。有人能帮我吗?

您已经使用了c++11之前的标准编译器(正如您的评论中所证明的那样)。旧的标准在让解析器从operator>>()中消除嵌套模板类型说明符中使用的一对闭角括号>>的歧义时遇到了问题。因此,你不得不在它们之间写一个空格:

vector<vector<Point> > varName;
                 // ^ Note the space

Yups类πάΓταῥεῖ说问题是因为">"answers">"之间存在空格。所以我把声明改为:

   vector<vector<Point>> varName;

这个:

   vector<vector<Point> > varName;

通过在">"answers">"之间添加空格,错误就消失了。。感谢πάΓταῥεῖ