私は 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
か? または問題が発生する可能性がありますか?
前もってありがとう、エル。