1

我正在尝试熟悉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 分配点,则坐标值将包含垃圾。

有没有办法在编译时将所有值初始化为零?如果不是,那么在运行时?

4

1 回答 1

2

您可以使用assign_zeroor 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 功能。您可以在此处找到几个示例。

于 2012-09-18T16:02:27.067 回答