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...カスタム ポイント クラスを使用している場合は、ブースト ジオメトリ機能を使用できるようにするために、いずれかを使用して登録する必要があります。ここでいくつかの例を見つけることができます。

于 2012-09-18T16:02:27.067 に答える