c++ operator dodawania w klasie

0

Proszę o pomoc sprawdzałem kod kilka razy wydaje mi się że wszystko ok i dalej nie działa ... dodaje wielomiany przeciążeniem operatora+

#include <iostream>

class Polynomial{
    unsigned int degree;
    double *coefficients;
  public:
   Polynomial(unsigned int n){
      degree = n;
      coefficients = new double[n+1];
      for(unsigned int i=0; i<=n; i++){
        coefficients[i]=0.0;
      }
     ~Polynomial(){
       delete coefficients;
     }

    friend Polynomial operator+(const Polynomial p1, const Polynomial p2);
};

Polynomial operator+(const Polynomial p1, const Polynomial p2){
    unsigned int k = 0;
    if ( p1.degree >= p2.degree) k = p1.degree;
    else k = p2.degree;
    Polynomial p3(k);
    for( k ; k>=0; k--){
        p3.coefficients[k] = p1.coefficients[k] + p2.coefficients[k];
     }
     return p3;
}

int main(int argc, char* argv[]){

    Polynomial p1(2), p2(2), p3(2);
    p3 = p1 + p2;

  return 0;
}
1

Masz w kodzie nagie new i delete (polecam lekturę), a nie respektujesz reguły 3/5 (o zerze nie ma mowy, bo masz new i delete). Przy kopiowaniu Polynomial gwarantujesz sobie double delete. Btw, w poprzednim temacie linkowałem poradniki jak przeładowywać operatory, ale widzę, że zignorowałeś, to zrobię to jeszcze raz: cppreference, mój.

0

nie zignorowałem tylko to średnio rozumiem ... nie studiuje inf a musze napisać ten program.

friend int & operator[](const int i);

chce przeładować ten operator i dalej error... "must be a nonstatic member funkcion" ?

0
double& operator [] (const int i) {
      return this->coefficients[i];
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1