我正在为向量类CMyVektor工作。我对C ++很陌生,因为我以前只编程过Java。
我的文件是头文件CMyVektor.h,cpp文件CMyVektor.cpp和main.cpp。
我应该为+和*写运算符重载,但遇到了一些我似乎无法自行解决的错误。
我已经声明了函数
CMyVektor operator+(CMyVektor a, CMyVektor b);
CMyVektor operator*(double lambda, CMyVektor a);
头文件中的,但显示:“此函数的参数太多”(Visual Studio 2019)
在我在cpp中实现该功能
CMyVektor CMyVektor::operator+(CMyVektor a, CMyVektor b)
它说“类CMyVektor没有成员运算符+”
除此之外,我无法通过a [0]等访问向量的值,但是我认为这是一个错误,因为isnt不直接是数组。
我尝试将头文件中的重载函数作为朋友,但是并没有改变任何内容。 我还为[]创建了一个运算符重载,似乎工作正常,这使我感到困惑。
CMyVektor.h:
private:
int dim;
double* vektor;
public:
CMyVektor(int dim);
CMyVektor(int dim, double values[]);
int getDim();
void setXKomponent(int pos, double wert);
double getXKomponent(int pos);
double& operator[](int pos);
CMyVektor operator+(CMyVektor a, CMyVektor b);
CMyVektor operator*(double lambda, CMyVektor a);
double laenge();
};
CMyVektor.cpp的部分:
#include "Math.h"
#include <iostream>
using namespace std;
CMyVektor::CMyVektor(int dim)
{
vektor = new double[dim];
}
double& CMyVektor::operator[](int pos) {
return *(vektor + pos);
}
CMyVektor CMyVektor::operator+(CMyVektor a, CMyVektor b)
{
double value1;
double value2;
if (a.getDim != b.getDim)
{
cout << "Die Vektoren haben nicht die selbe Dimension.";
return NULL;
}
else
{
a[0] + b[0] = value1;
a[1] + b[1] = value2;
}
}