Я пытаюсь познакомиться с boost::geometry::point
, В моем классе у меня есть конструктор по умолчанию без параметров, и я хочу инициализировать в этом случае все значения точек с нуля.
Поскольку функции set / get являются шаблонами, следующая часть кода выдаст ошибку во время компиляции:
for( std::size_t i = 0; i < pnt.size() ; i++ )
{
pnt.set<i>( 0.0 );
}
Для ссылки на документацию http://www.boost.org/doc/libs/1_51_0/libs/geometry/doc/html/geometry/reference/models/model_point.html
Мне нужно установить некоторые значения, потому что:
Координаты не инициализированы. Если конструктор с параметрами не вызывается и точки не назначаются с помощью set или assign, тогда значения координат будут содержать мусор.
Есть ли способ инициализировать все значения с нуля во время компиляции? Если нет, то во время выполнения?
Ты можешь использовать assign_zero
или же assign_values
(этот работает только для 2, 3 и 4 компонентов):
boost::geometry::assign_zero(pnt);
boost::geometry::assign_values(pnt, 0.0, 0.0);
Если вы используете пользовательский класс точек, вам нужно зарегистрировать его, используя один из BOOST_GEOMETRY_REGISTER_POINT...
для того, чтобы иметь возможность использовать функциональность Boost Geometry. Вы можете найти несколько примеров Вот.
Других решений пока нет …