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
我想在我的图像中找到最大的轮廓(使用 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