C++ Operator(+) bei Klassen?

Hey,

ich beschäftige mich mit Operatoren und versteh einige Dinge einfach nicht. Ich habe eine Methode area mit der man den Flächeninhalt eines Quadrates ausrechnen kann.

Nun wollte ich einen + Operator nutzen um den Flächenihnhalt eine Quadrates mit einem Flächeninhalt des anderen Quadrates zu addieren.

Erst habe ich die Werte für meine beiden Flächeninhalte initialsiert

Square Tosio(2);
Square Testo(5);

um anschließend den Flächeninhalt zu addieren.


Square Square::operator +(Square Add){
a_=Add.area()+Add.a_;
return *this;
}

Eigentlich müsste ich 29 als Ergebnis bei Multi=Tosio+Testo rausbkommen. Ich bekomm aber immer 30, wie kann das sein? Der Flächeninhalt von Tosio ist 4 und von Tesia 25 also 2*2 +5*5 =29.

Square Tosio(2);
Square Tesia(5);

Square Multi=Tosio+ Tesia;
cout<<Multi<<endl;

Weiß jemand vielleicht voran es liegt?

#include <iostream>
#include <ctime>
#include <sstream>
#include <math.h>       
using namespace std;

class Square{
public:
double a_;   

public:
    Square(){
    a_=3;
    }
    
    Square(double a){
     a_=a;
    }
    
    Square operator+ (Square);
    Square add(Square Fl);
    double area();
    string toString();
};



string Square::toString(){
       stringstream s;
       string d=to_string(a_);
       s<<"Seitenlänge"<<" "<<d<<endl;
       return s.str();
    }



double Square::area(){
double y;
y=a_*a_;
return y;    
}

 
Square Square::add(Square Fl){
double x=0;    
x=Fl.area()+Fl.area();
x=sqrt(x);
return x;
}




Square Square::operator +(Square Add){

a_=Add.area()+Add.a_;
return *this;
}


ostream& operator<<(ostream & outStream,Square Multi){
outStream<<Multi.a_<<endl;    
return outStream;
    
}



int main()
{



Square Tosio(2);
Square Testo(5);


Square Multi=Tosio+ Testo;
cout<<Multi<<endl;








    return 0;
}


Computer, Technik, Programmieren, compiler, Code, Informatik, ProgrammierSprache C plusplus, Spiele und Gaming
Was bedeutet/sagt mir dieser error (c++)?

Hey,

ich versuche gerade zu verstehen, was dieser error bedeutet. Hat jemand vielleicht eine Idee? Ich wollte mir ein dynamisches Feld anlegen, aber jetzt erhalte ich immer diesen error:

Segmentation fault (core dumped)                          

...Program finished with exit code 139                                                                                                          

#include <iostream>
#include <ctime>
using namespace std;


class Article{
public:

string name_="Honig";
unsigned int productCode_=12345;
unsigned int number_=25;
double price_=22;

Article(){};

Article(string name){
cout<<"Geben Sie den Artikelnamen ein"<<" "<<endl;
cin>>name;
srand(time(0));
name_=name;
productCode_=rand()%5000;
number_=rand()%200;
price_=rand()%1000;
}

unsigned int getNumber(){
return number_;   
} 

double getPrice(){
return price_;   
} 

string toString(); 
};







string Article::toString(){
cout<<"-------------------------------"<<endl;
cout<<"Der Artikelname lautet"<<" "<<name_<<endl;
cout<<"Der Produktcode lautet"<<" "<<productCode_<<endl;
cout<<"Die Anzahl der Artikel beträgt"<<" "<<number_<<endl;
cout<<"Der Artikelpreis lautet"<<" "<<price_<<endl;
return name_;
}






 void printAll(int n, Article dat[]){
 for(int i=0;i<n;i++){
 dat[i].toString();   
 }
 }






 Article maxPrice(int n, Article dat[]){
double b[n];

for(int i=0;i<n;i++){
double a=dat[i].getPrice(); 
b[i]=a;
cout<<a<<endl;
}

int g;
double max = b[0]; //Nimm an, dass arr[0] das grösste Element ist.

for(size_t i =1;i<n;++i)
{
   if(b[i] > max) {
       //Annahme war falsch (wir haben noch nicht das grösste Element in max)
       max = b[i]; //Übernimm das Maximum

        g=i;
   }
}
cout<<max<<endl;
return dat[g-1];
} 






 double getCapital(int n, Article dat[]){
unsigned int z; 
double k;
unsigned int s[n];
double t[n];
for(int i=0;i<n;i++){
z=dat[i].getNumber();
k=dat[i].getPrice();
s[i]=z;
t[i]=k;
}
double p;
double d[n];
for(int i=0;i<n;i++){
d[i]=s[i]*t[i];
p=p+d[i];
} 
cout<<p<<endl;

return 0;
}





int main()
{
 int n1=3;
  Article *wio;
  wio= new Article[n1]; 

  wio->toString();
   maxPrice(n1, wio);


   //getCapital(n1, wio);


//Article wio(name1);
//wio.toString();


//Article dat1[n1](name1);
//printAll(n1,dat1);
//maxPrice(n1,dat1);
//getCapital(n1,Topl);









   return 0;
}
 
Computer, Programmieren, Informatik, Quellcode, ProgrammierSprache C plusplus
Was bedeutet dieser Fehler in C++?

Hey,

ich beschäftige mich seit einigen Tagen wieder mit C++ und wollte mal wissen, was dieser Fehler bedeutet:

main.cpp: In function ‘Article maxPrice(int, Article*)’:
main.cpp:56:10: error: array must be initialized with a brace-enclosed initializer
 int b[i]=a;
          ^

Gibt es da jemanden, der sich damit ein wenig auskennt?

Danke im Voraus.

#include <iostream>
#include <ctime>

using namespace std;

class Article {
  public:
    string name_;
    unsigned int productCode_;
    unsigned int number_;
    double price_;

    Article(string name) {
      cout << "Geben Sie den Artikelnamen ein" << " " << endl;
      cin >> name;
      srand(time(0));
      name_ = name;
      productCode_ = rand() % 5000;
      number_ = rand() % 200;
      price_ = rand() % 1000;
    }

    unsigned int getNumber() {
      return number_;
    }

    double getPrice() {
      return price_;
    }

    string toString();
};

string Article::toString() {
  cout << "-------------------------------" << endl;
  cout << "Der Artikelname lautet" << " " << name_ << endl;
  cout << "Der Produktcode lautet" << " " << productCode_ << endl;
  cout << "Die Anzahl der Artikel beträgt" << " " << number_ << endl;
  cout << "Der Artikelpreis lautet" << " " << price_<<endl;
  return name_;
}

void printAll(int n, Article dat[]) {
  for (int i = 0; i < n; i++) {
    dat[i].toString();
  }
}

Article maxPrice(int n, Article dat[]) {
  for (int i = 0; i < n; i++) {
    double a = dat[i].getPrice();
    double b[i] = a;
  }

  return dat[n - 1];
}

int main() {
  string name1;
  // Article Test(name1);
  // Test.toString();
  int n1 = 3;
  Article dat1[n1](name1);
  // printAll(n1, dat1);
  maxPrice(n1, dat1);

  return 0;
}
Computer, Technik, Programmieren, Informatik, Programmiersprache