重载函数调用操作符和赋值

Kev*_*vin 1 c++ operator-overloading

在我的一个项目中,我正在写一个包装器std::vector.我这样做是因为我使用的是齐次坐标,对于某些操作来说,暂时"忘记"第四个坐标更容易.

现在我偶然发现了一个问题.我有大量的作业,如下所示:

    Vector v;
    v(0) = 5;
    v(1) = 6;
Run Code Online (Sandbox Code Playgroud)

等等.我还想做以下事情:

   double x;
   x = v(0);
Run Code Online (Sandbox Code Playgroud)

对于最后一件事,我可以重载()运算符,但是如何实现第一件事?(零和一个是索引).

Joh*_*ohn 5

只需返回参考.

class Vector
{
  int data[4];
  int & operator() (int index) { return data[index]; }
};
Run Code Online (Sandbox Code Playgroud)