error: 'varName' was not declared in this scope

error: 'varName' was not declared in this scope

我想在我的图像中找到最大的轮廓(使用 opencv 和 C++)。我已经读过这个线程: Finding Contours in OpenCV? and Draw the biggest element conncted using 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;

我的问题。为什么编译器在我声明该变量的那一行询问这个变量还没有声明。有人可以帮助我吗?

是的,就像 πìντα ῥεῖ 说的。问题是因为 space 在“>”和“>”之间。 所以我改变了声明:

   vector<vector<Point>> varName;

给这个:

   vector<vector<Point> > varName;

通过在“>”和“>”之间添加 space,错误消失了。谢谢 πìντα ῥεῖ

您已经使用了 c++11 之前的标准编译器(如 中所证明)。旧标准在让解析器消除来自 operator>>() 的嵌套模板类型说明符中使用的一对右尖括号 >> 时存在问题。因此你必须在它们之间写一个 space:

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