如何向向量添加或重载函数

时间:2014-02-03 20:22:14

标签: c++ operators operator-overloading

我希望通过为vector创建一个运算符来使编码更容易。

我有一个班级Voxelgrid

class Voxelgrid {
    struct Voxel{
        float dist;
        float weight;
        };
    vector<Voxel> grid;
    int RESOLUTION;
};

现在问题是我想要访问和写入这些体素很多,我将使用索引来访问它们:

grid[i + j*RESOLUTION + k*RESOLUTION*RESOLUTION].distance

例如。

是否可以编写运算符以便我可以编写

grid(i,j,k).distance

代替。

1 个答案:

答案 0 :(得分:0)

例如

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];
   }
//...
};