私は a を使用してboost::multi_arrayおり、特定の座標が範囲内にあるかどうかを確認する必要がある場合は、次のようにします。
bool MapData::IsWithinBounds(TileArray3D::index x, TileArray3D::index y, TileArray3D::index z) const {
return (x >= 0 and x < GetWidth()) and
(y >= 0 and y < GetHeight()) and
(z >= 0 and z < GetDepth());
}
は次のようにTileArray3D定義されます。
typedef boost::multi_array<TileID, 3> TileArray3D;
そしてTileID次のとおりです。
BOOST_STRONG_TYPEDEF(int, TileID);
GetWidth/Height/depth のシグネチャは次のとおりです。
TileArray3D::size_type GetWidth() const;
しかしTileArray3D::size_type、署名されておらず、TileArray3D::index署名されています。これらの型を間違った方法で使用していますか? または、これを回避する方法はありますか?を にキャストする必要がありindexますsize_typeか? または問題が発生する可能性がありますか?
前もってありがとう、エル。