gpt4 book ai didi

c++ - 类定义 vector

转载 作者:太空宇宙 更新时间:2023-11-03 23:02:50 24 4
gpt4 key购买 nike

以下是我完成的将边界框分成更小部分的类。

class reticula
{
int _columnas;
int _renglones;
int _num_pixelotes;
vector<vector<Point> > Pixelotes;

public:
reticula():
_columnas(0),
_renglones(0),
_num_pixelotes(0),
Pixelotes(){};
/// crear la reticula con los valores deseados
reticula(vector<Point> verticesB, int renglon, int columna);

Size size(void);
vector<Point> en(int el_renglon, int la_columna);
~reticula(void);
};

reticula::reticula(vector<Point> verticesB, int renglon, int columna ){
if(verticesB.size()!= 4){
cout<< "El vector debe tener las 4 esquinas del rectangulo a dividir"
<< endl;
throw 400; // es para mandar la exepción.
}
_columnas = columna;
_renglones = renglon;
_num_pixelotes = columna * renglon ;
Pixelotes.resize(_renglones * _columnas);
double dis_mayor, dis_menor;//con respecto a los ejes
Point dif_10;
Point dif_21;
Point dif_32;
Point dif_03;
double es_mayor, es_menor;


dif_10 = verticesB[1]-verticesB[0];
dif_21 = verticesB[2]-verticesB[1];
dif_32 = verticesB[3]-verticesB[2];
dif_03 = verticesB[0]-verticesB[3];

dis_mayor = norm(dif_10);
dis_menor = norm(dif_21);

es_mayor = dis_mayor/(double) _columnas;
es_menor = dis_menor/(double) _renglones;
Point aux;
Point aux2;
vector<Point> vertices_re((_columnas + 1)*(_renglones + 1));
for (int i = 0; i < _renglones; i++){
for(int j= 0; j < _columnas; j++){
for(int h=0; h < 4; h++ ){
aux = verticesB[0] + ((((double)j*dis_mayor) * dif_10) + (((double)i * dis_menor)*dif_21));
if(h=0){aux2= aux;}
else if(h=1){aux2= aux + (dis_mayor * dif_10);}
else if(h=2){aux2= aux + (dis_mayor * dif_10) + (dis_menor * dif_21);}
else if(h=3){aux2= aux + (dis_menor * dif_21);}
Pixelotes[i * _columnas + j].push_back(aux2);
}
}
}


}


Size reticula::size(void){
Size Total;
Total.width = _columnas;
Total.height = _renglones;
return Total;

}

vector<Point> reticula::en(int el_renglon, int la_columna){
if(el_renglon > _renglones|| la_columna> _columnas){
cout << " el renglon y la columna se deben encontrar dentro de los parametros "
<<endl;
cout<< _renglones<<" , "<<_columnas<<endl;
vector<Point> vacio;
vacio.push_back(Point(0,0));
return (vacio);
}
int busca;
busca = el_renglon * _columnas + la_columna;
}

我想创建一个包含此类的 vector ,但我不知道我做错了什么

vector<reticula> SoloReti(contours.size());
for(int g=0; g< SoloReti.size(); g++){
SoloReti[g].reticula(contours[g], 5,4);
}

g++ 编译器提示“reticula::reticula 的无效使用”有人能告诉我问题出在哪里吗?

最佳答案

当您声明您的 vector<reticula> SoloReti(contours.size()) 时, 它用 contours.size() 初始化 vector 使用默认构造函数构建网状结构 reticula() .

当你做 SoloReti[g].reticula ,您正在尝试从已构造的对象调用构造函数。解决方案:使用赋值运算符:

vector<reticula> SoloReti(contours.size());
for(int g=0; g< SoloReti.size(); g++){
SoloReti[g] = reticula(contours[g], 5,4);
}

关于c++ - 类定义 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12849085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com