Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV,C++;:插入集合 我正在使用Ubuntu 11.04上的NETBeaS 6.9开发C++应用程序。我正在使用OpenCV 2.3.1。我想知道是否有人能告诉我这个代码有什么问题_C++_List_Opencv_Netbeans 6.9_Ubuntu 11.04 - Fatal编程技术网

OpenCV,C++;:插入集合 我正在使用Ubuntu 11.04上的NETBeaS 6.9开发C++应用程序。我正在使用OpenCV 2.3.1。我想知道是否有人能告诉我这个代码有什么问题

OpenCV,C++;:插入集合 我正在使用Ubuntu 11.04上的NETBeaS 6.9开发C++应用程序。我正在使用OpenCV 2.3.1。我想知道是否有人能告诉我这个代码有什么问题,c++,list,opencv,netbeans-6.9,ubuntu-11.04,C++,List,Opencv,Netbeans 6.9,Ubuntu 11.04,void AddTriangle(CvPoint buf[3],set&V) { 三角形; 国际公司; for (inc=0; inc<3; ++inc) { triangle.v[inc].x=buf[inc].x; triangle.v[inc].y=buf[inc].y; } V.insert((const Triangle) triangle); for(inc=0;inc-std::_-Rb_-tree::_-M_-insert_-unique(const-Va


void AddTriangle(CvPoint buf[3],set&V)
{
三角形;
国际公司;

for (inc=0; inc<3; ++inc)
{
    triangle.v[inc].x=buf[inc].x;
    triangle.v[inc].y=buf[inc].y;
}
V.insert((const Triangle) triangle);
for(inc=0;inc-std::_-Rb_-tree::_-M_-insert_-unique(const-Val&)[带_-Key=sTriangle,_-Val=sTriangle,_-KeyOfValue=std:_-Identity,_-Compare=std::less,_-Alloc=std::allocator]。
/usr/include/c++/4.5/bits/stl_set.h:408:29:从'std::pair',Compare,typename(类型名)Alloc::rebind::other>实例化::const_迭代器,bool>std::set::insert(const value_type&)[带_Key=sTriangle,_Compare=std::less,_Alloc=std::分配器,typename std::_Rb(树)const(const)const(迭代器,value)sTriangle=sTriangle]'

三角形的定义如下

typedef struct sTriangle
{
CVV点[3];
}三角形;

任何帮助都将不胜感激,

Peter.

STL无法区分集合中三角形的实例,它正在寻找重载“要将
三角形
放入集合,必须实现比较运算符。否则集合无法分辨哪些值相等,哪些值不同

typedef struct sTriangle
{
CvPoint v[3];
bool operator<(const sTriangle& other) const;
} Triangle;

bool sTriangle::operator<(const sTriangle& other) const
{
   // compare 'this' with 'other'
}

我觉得这不是完整的错误输出。应该有一行包含单词
error
。当您检索其余的错误输出时,是否有理由不通过for(int inc=0;…)在本地对循环计数器进行范围限定?错误消息的其余部分是错误消息的其余部分是:/usr/include/c++/4.5/bits/stl_函数。h:230:22:错误:与“运算符”不匹配
typedef struct sCvPoint {
int x;
int y;
} CvPoint;

typedef struct sTriangle
{
CvPoint v[3];
} Triangle;

bool operator==(CvPoint const& left, CvPoint const& right)
{
    return left.x == right.x && left.y == right.y;
}

bool operator<(CvPoint const& left, CvPoint const& right)
{
    return left.x == right.x
        ? left.y < right.y
        : left.x < right.x;
}

bool operator<(Triangle const& left, Triangle const& right)
{
    return left.v[0] == right.v[0]
        ? left.v[1] == right.v[1]
            ? left.v[2] < right.v[2]
            : left.v[1] < right.v[1]
        : left.v[0] < right.v[0];
}