我如何使用这样的功能? (C ++,运算符重载)

时间:2017-12-09 13:15:46

标签: c++

#include <iostream>
using namespace std;

class VectorND
{
public:
    int N;
    VectorND(int n)
        :N(n) {}

    float *vec_value = new float[N];

    void assignValue(int i, float v)
        {
            vec_value[i] = v;
        }

};

这是我的代码,我试图解决这个问题,  但我不知道该怎么做。

  

问题4.为。实现VectorND类的运算符重载   以下操作。

my_vec.assignValue(3) = 10;

std::cout << my_vec(3);
     

实施例

int main(void)
{
  VectorND my_vec(10);
    my_vec.assignValue(3) = 10;
    std::cout << my_vec(3);

    return 0;
}

Output : 10

1 个答案:

答案 0 :(得分:-1)

对于第一个运算符重载,您必须执行以下操作:

float& operator () (int i)
{
    return vec_value[i];
}

执行myVec(3) = 4;时,myVec(3)会在索引3处返回对浮点数的引用,然后将其分配给4。

对于myVec.assign(3) = 10,您应该重载assign方法以获取索引并返回对该索引的float的引用。

对于第二个问题,你必须在班级friend ostream& operator << (ostream& n, VectorND& myVec);

中做一个声明更复杂

然后在课外:

ostream& operator<<(ostream& n, const VectorND& myVec)
{
   // This just pushes all the values to the stream
   for(int i = 0; i< N; i++) cout<<vec_value[i]<<endl;
}