Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Hilfe bei Vergleichsoperatoren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.11.2015, 16:58 Uhr
Carolina Maria Acosta



Hallo, ich habe ein kleinen Programm in Visual Studio erstellt, wo ich zwei Objekte erzeugen kann.

Ausgabe im Compiler:

ID 1000
Hersteller Mercedes
Baujahr 2015
Leistung 320 PS
Art Cabrio
Gewicht 1 Tonne

ID 1001
Hersteller Ferari
Baujahr 2015
Leistung 420 PS
Art Cabrio
Gewicht 2 Tonnen

Ich möchte jett das Gewicht der beiden erstellten Objekte vergleichen und derjenige Hersteller, der weniger wiegt,

bekommt einen Bonus. Was dann auch in der Konsole ausgegeben sollte. Wie mache ich das, bin am verzweifeln. :/

Zu meinem Programm, habe 3 cpp und 2 Header Dateien. Das Gewicht ist in der Klasse "Pkw" und der Hersteller ist in der

Klasse "Fahrzeuge".



Fahrzeuge.h


C++:
#ifndef FAHRZEUGE_H
#define FAHRZEUGE_H

class Fahrzeuge
{
private:
    static int serial;
    unsigned int m_id;
    char* m_hersteller;
    unsigned int m_baujahr;
    unsigned int m_mleistung;

public:
    Fahrzeuge(char* hersteller, unsigned int baujahr, unsigned int mleistung);
    ~Fahrzeuge();
    Fahrzeuge(Fahrzeuge &otherFahrzeuge);
    Fahrzeuge &operator=(Fahrzeuge &otherFahrzeuge);

    //Set Methode
    void setHersteller(char* hersteller);
    void setBaujahr(unsigned int baujahr);
    void setMleistung(unsigned int mleistung);

    //Get Methode
    char* getHersteller() { return m_hersteller; }
    unsigned int getBaujahr() { return m_baujahr; }
    unsigned int getMleistung() { return m_mleistung; }

    void destroy();
    void print();

};

#endif



Fahrzeuge.cpp


C++:
#include"Fahrzeuge.h"
#include<iostream>

using namespace std;

int Fahrzeuge::serial = 1000;

Fahrzeuge::Fahrzeuge(char* hersteller, unsigned int baujahr, unsigned int mleistung) :m_id(serial++)
{
    this->m_hersteller = new char[strlen(hersteller) + 1];
    strcpy(this->m_hersteller, hersteller);
    this->m_baujahr = baujahr;
    this->m_mleistung = mleistung;
}

Fahrzeuge::~Fahrzeuge()
{
    destroy();
}

Fahrzeuge::Fahrzeuge(Fahrzeuge &otherFahrzeuge) :m_id(serial++)
{
    this->m_hersteller = new char[strlen(otherFahrzeuge.m_hersteller) + 1];
    strcpy(this->m_hersteller, otherFahrzeuge.m_hersteller);
    this->m_baujahr = otherFahrzeuge.m_baujahr;
    this->m_mleistung = otherFahrzeuge.m_mleistung;
}

Fahrzeuge &Fahrzeuge::operator=(Fahrzeuge &otherFahrzeuge)
{
    if (this != &otherFahrzeuge)
    {
        void destroy();
        this->m_hersteller = new char[strlen(otherFahrzeuge.m_hersteller) + 1];
        strcpy(this->m_hersteller, otherFahrzeuge.m_hersteller);
        this->m_baujahr = otherFahrzeuge.m_baujahr;
        this->m_mleistung = otherFahrzeuge.m_mleistung;
    }
    return *this;
}

void Fahrzeuge::destroy()
{
    delete[] m_hersteller;
}

void Fahrzeuge::print()
{
    cout << "ID\t\t\t: " << m_id << endl;
    cout << "Hersteller\t\t: " << m_hersteller << endl;
    cout << "Baujahr\t\t\t: " << m_baujahr << endl;
    cout << "Motorenleistung\t\t: " << m_mleistung << " PS" << endl;
}





Pkw.h


C++:
#ifndef PKW_H
#define PKW_H
#include"Fahrzeuge.h"

class Pkw:public Fahrzeuge
{
private:
    char* m_art;
    double m_gewicht;

public:
    Pkw(char* art, double gewicht, char* hersteller, unsigned int baujahr, unsigned int mleistung);
    ~Pkw();

    //Set Methode
    void setArt(char* art);
    void setGewicht(double gewicht);

    //Get Methode
    char* getArt() { return m_art; }
    double getGewicht() { return m_gewicht; }

    void printPkw();

};
#endif /* PKW_H */



Pkw.cpp


C++:
#include"Pkw.h"
#include<iostream>

using namespace std;

Pkw::Pkw(char* art, double gewicht, char* hersteller, unsigned int baujahr, unsigned int mleistung) :Fahrzeuge

(hersteller, baujahr, mleistung)
{
    this->m_art = new char[strlen(art) + 1];
    strcpy(this->m_art, art);
    this->m_gewicht = gewicht;
}

Pkw::~Pkw()
{
    delete[]m_art;
}

void Pkw::printPkw()
{
    print();
    cout << "Art\t\t\t: " << m_art << endl;
    cout << "Gewicht\t\t\t: " << m_gewicht << "\n" << endl;
}



main.cpp


C++:
#include<iostream>
#include"Fahrzeuge.h"
#include"Pkw.h"

using namespace std;

int main()
{
    Pkw p1("Cabrio", 1, "Mercedes", 2015, 320);
    p1.printPkw();

    Pkw p2("Limousine", 3, "Bentley", 2015, 400);
    p2.printPkw();

    system("pause");
}


Dieser Post wurde am 22.11.2015 um 18:00 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.11.2015, 20:31 Uhr
Hans
Library Walker
(Operator)


Hi,

ist die Klassenstruktur so vorgegeben oder hast Du Dir das so ausgedacht? Evtl. wäre es sinnvoll, dass Design der Klassen noch mal zu überdenken, so dass Du eine Vergleichsoperation innerhalb einer Klasse definieren kannst.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.11.2015, 08:15 Uhr
ao

(Operator)


Du kannst mit p1->getGewicht() und p2->getGewicht() die Gewichte abfragen und vergleichen.

Aber wenn es um Vergleichsoperatoren geht, ist das vermutlich nicht das, was du brauchst. Hier ist ein Thread in einem anderen Forum, in dem ganz ähnlich gefragt wird. Und ich würde sagen, der zweite und dritte Beitrag (von den Usern Nexus und Volkard) antworten richtig. Nexus schlägt einen globalen Vergleichsoperator vor (also außerhalb jeder Klasse), und Volkard einen Vergleichsoperator als Klassenmember. Benutzt werden beide gleich.

https://www.c-plusplus.net/forum/232142-full

Auch von mir die Frage, ob das Klassendesign vorgegeben ist oder von dir entworfen wurde. Und welchen Sinn haben die ganzen Setter-Methoden. Welchen praktischen Zweck hat "setHersteller" bei einem Auto? Keinen, oder? Kann man per "setHersteller" aus einem Porsche einen Mercedes machen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: