В следующем программном теле косички вектора указателей. Точки - это структура координат x, y, z и point_id. Я считаю, что тело передается ссылкой const, следующий шаг должен приводить к ошибке. BUt программа работает без проблем. Не могли бы вы объяснить мне, почему это.C++ pass by const reference
void readOutFile(const Body& body, int n){
....
body.bp[0]->points.push_back(Point_id(p,i));
}
'body' передается как' const', но компилятор не знает, что 'body.bp [0] -> points' должен быть' const'. – wroniasty
Он будет работать нормально, а ошибка const будет ошибкой времени компиляции, а не ошибкой времени выполнения. –
В C++ константа неглубокая, а не глубокая. Таким образом, он воздействует на объект, но не на его ассоциации. Это означает, что вы можете вызывать только вызовы методов const. Но методы const могут изменять другие объекты, всегда использовать методы в интерфейсе и использовать хороший инструмент lint для проверки глубины const. –