У меня есть эта ошибка, когда я пытаюсь вставить объект в набор stl vector
, Node
- это класс, который я создал.Explain Не могли бы вы объяснить мне, как решить эту ошибку?
Код:
void car::expandnode(Node& current_node,std::set<vector<Node> >& closed_list,grid& map){
int c_a = current_node.get_x();
int c_b= current_node.get_y();
if((map.get(c_a,++c_b))!=1){
point p(c_a,++c_b);
Node ns(p,costtan);
costtan= 1+ heuristic1(ns); // cost to arrive node
if(std::find((*closed_list.end()).begin(),(*closed_list.end()).end(),ns)==((*closed_list.end()).end()))
closed_list.end()->push_back(ns); //error
}
float car::heuristic1(Nodo& successor){
int c1= successor.get_x();
int c2= successor.get_y();
float result = sqrt(pow((c1-destination_point_.get_x()),2) + pow((c2-destination_point_.get_y()),2));
return resultado;
}
Ошибка:
error: passing ‘const std::vector<Node>’ as ‘this’ argument discards qualifiers [-fpermissive]
closed_list.end()->push_back(ns);
Спасибо
РЕДАКТИРОВАТЬ1:
IЯ реализую алгоритм A star, поэтому в функции expandnode, если преемник не является препятствием (!=1
), я вставляю его в set
из vector
, этот набор содержит узлы-преемники каждого узла, я добавилбольше кода к вопросу, чтобы уточнить мои сомнения
Поскольку я вызываю expandnode()
из другой функции (основной функции A-star), мне нужно вставить преемники каждого узла в последний вектор set
, я использую .end()
для этой цели, потому что изначально у каждого вектора есть один узел, однажды был сделан вызов expandnode()
, у этого вектора есть узел и его преемники