Я хочу немного упростить кодирование, создав оператор для моего вектора.
У меня есть класс Voxelgrid
:
class Voxelgrid {
struct Voxel{
float dist;
float weight;
};
vector<Voxel> grid;
int RESOLUTION;
};
Теперь дело в том, что я хочу получить доступ и написать этим Voxels довольно много, и я получу доступ к ним, используя индексирование:
grid[i + j*RESOLUTION + k*RESOLUTION*RESOLUTION].distance
например.
Можно ли написать оператор, чтобы я мог вместо этого написать
grid(i,j,k).distance
вместо.
Например
class Voxelgrid
{
public:
const Voxel & operator []( std::vector<Voxel>::size_type i ) const
{
return grid[i];
}
//...
};
Или вы можете определить функцию-член
class Voxelgrid
{
public:
const Voxel & GetVoxel( size_type i, size_type j, size_type k ) const
{
return grid[i + j*RESOLUTION + k*RESOLUTION*RESOLUTION];
}
//...
};
voxelgrid
вместо элемента сетки? Этоvoxelgrid(i,j,k).distance
илиvoxelgrid[i,j,k].distance
(возможны оба варианта.s/distance/dist/
, предположительно. И похоже, что вы используетеgrid
для экземпляраVoxelgrid
в примерах, но это сбивает с толку, так как член вектора также называетсяgrid
.