Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何使用这样的函数?(C++,运算符重载)_C++ - Fatal编程技术网

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

我如何使用这样的函数?(C++,运算符重载),c++,C++,这是我的代码,我正试图解决这个问题, 但我不知道该怎么办 问题4。为的VectorND类实现运算符重载 以下操作 #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

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

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

#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;
        }

};
范例

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
当您执行myVec3=4;,myVec3返回对索引3处的浮点值的引用,然后将其分配给4

对于myVec.assign3=10,应该重载assign方法以获取索引并返回对该索引的浮点的引用


对于第二个,它更复杂,你必须在你的类friend ostream&operator中做一个声明,你必须重载函数调用操作符。你希望什么时候调用新的?我已经阅读了操作符重载的解释,但我不知道如何将它应用于这个问题。my_vec.assignValue3=10;我不能特别做这部分。VectorND和myVec应该是const VectorND和myVec,在输出操作符重载中。@user0042您是对的,这是最好的做法哇,我真的很感激。你是编码之神。如果成功了,别忘了投票和接受@DW7@JakeFreeman你最好按照我的做法来做。
float& operator () (int i)
{
    return vec_value[i];
}
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;
}