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