CMyVektor运算符为+和*重载

时间:2019-04-22 11:42:12

标签: c++ operator-overloading

我正在为向量类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;
    }
}

0 个答案:

没有答案