Я хочу трохи полегшити своє кодування, створивши оператор для свого вектора.
У мене є клас 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
замість цього.
Відповіді:
0 для відповіді № 1Наприклад
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];
}
//...
};