Elemente eines Vektors addieren ??



  • hallo kann mir jemand sagen wieso meinen programm nicht funktioniert? Muss ich vielleicht den '+' Operator auch noch überladen?

    #include<iostream>
    #include<stdio.h>
    #include<vector>
    
    class vec {
    
          public:
               void Elementanlegen()
            {   cout<<"Element:";
                cin>>Element;
            } 
    
             friend ostream & operator << (ostream & out, vec &x);
    
          private:
               int Element;
    };
    
    int main()
    {
    
      int anzahl,summe;
      float mittelwert;
      cout<<"wie viele Elemente sollen angelegt werden??: ";
      cin>>anzahl;
    
      vector<vec> v(anzahl);
      for(int i=0; i<anzahl; ++i) {
    
      v[i].Elementanlegen();
       summe += v[i];             // no match for `int & += vec &'  ???
    
      }
      mittelwert=summe/anzahl;
    
     cout << v[1];
    
     getchar();
     return 0;
    }
    
    ostream & operator << (ostream &out, vec &x)
    {
     out << x.Element;
     return out;
    }
    

    Danke, Mathias



  • summe += v[i];

    Wie kommst du darauf, dass sich eine Klasse mit einem Integer addieren lässt?



  • schon klar, deswegen frag ich ja ob ich den + operator überladen muss? wie kann ich denn sonst die Werte des Vektors addieren??



  • Verstehe ich jetzt nicht. Du weißt, dass du den Operator überladen musst, da du sonst in nicht mit vec addieren kannst, fragst aber ob du es sollst?



  • ich weiss nicht ob ich den operator + überladen muss... deswegen frag ich ja euch 🙄 ist nur eine idee von mir gewesen, da ich ja auch schon '<<' überladen musste damit ich die werte des vektors erfragen kann.

    wenn es nur mit dem überladen von '+' gehen sollte, wie mach ich das??

    thx



  • schon klar, deswegen frag ich ja ob ich den + operator überladen muss? wie kann ich denn sonst die Werte des Vektors addieren??

    Ich nehme an du willst die private Variable "Element" zu der Variable "summe" addieren. Entweder schreibst du eine Getter-Funktion, w.z.B.:

    summe += v[i].getElement();

    Oder du überlädst den '+' Operator. Ich hab das aber lange nicht mehr gemacht, deshalb kann ich dir dabei nicht behilflich sein.



  • spitze 👍

    int vec::getElement() {
    
    return this->Element;
    

    😃

    THX!!!!


Anmelden zum Antworten