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