Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » + Overloading!

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
07.11.2003, 19:29 Uhr
~Problemkind
Gast


Also ich hab ein problem, ich hab morgen an der schule prg test und ich muss operator overloading können....alles schön und gut, also denk ich mir ich überlade mal das +!
Hm...leider funktioniert es nicht ganz wie ich will...hier mal die codierung:

implementierung:
(steht aber noch viel mehr, nur das wird das einzig wichtige sein)


C++:
Vektor &Vektor::operator+(Vektor erster)
{
    x=x+erster.getX();
    y=y+erster.getY();
    return *this;
}


//.h:

#ifndef VEKTOREN_H
#define VEKTOREN_H
#include<iostream>
using namespace std;
class Vektor{
    public:
        Vektor(int=0,int=0);
        ~Vektor();
        int getX() const;
        int getY() const;
        int getRadius() const;
        int getWinkel() const;
        Vektor &operator+(Vektor);
    private:
        int x,y;
};
ostream &operator<<(ostream &,const Vektor &);
#endif VEKTOREN_H


//main:

#include "vektoren.h"
int main()
{
    Vektor eins(5,1);
    Vektor zwei(1,2);
    Vektor drei;
    drei=eins+zwei+eins;
    cout<<"  eins: "<<eins<<endl;
    cout<<"+ zwei: "<<zwei<<endl;
    cout<<"+ eins: "<<eins<<endl;
    cout<<"= drei: "<<drei<<endl;
    return 0;
}



das problem ist das er eins auch verändert, bei drei=eins+zwei+eins;
er setzt eins übrigens auf(11,4), sollte aber (5,1) bleiben!
wenn ich es so umschreiben würd das er es nicht mehr verändert würde es nur noch mit 2 objekten gehen...zb drei=eins+zwei;
Bitte helft mir!

--edit: Pablo. [ cpp ] tagse gesetzt --

Dieser Post wurde am 07.11.2003 um 19:37 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.11.2003, 19:48 Uhr
Oliver
S2-Pixelgeneral


Hallo,

du willst den + - Operator überladen, du hast den += Operator überladen!
du hast u.a. ...eins+zwei geschrieben.
In deinem Code heißt das für den Compiler: eins.operator+(zwei)
Nun ist eins das this, bzw. das x und das y, und das wird ja erhöht, also wird eins erhöht.

Probier es mal so(ungetestet):


C++:

friend Vector &operator+(Vector erster, Vector zweiter)
{
Vector erg;
erg.x=erster.x+zweiter.x;
erg.y=erster.y+zweiter.y;
return erg;
}



ps: ich hoffe ich habs verständlich erklärt
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.11.2003, 19:51 Uhr
~Problemkind
Gast


Ja thx, stimmt ich habs ja in der klasse gemacht...puh thx vielmals!
wenn ichs umschreiben ned in den nächsten 20 min zambring, schreib ich nochmal!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.11.2003, 19:56 Uhr
~Problemkind
Gast


Ok es gibt noch ein problem....ich habs zwar jetzt umgschrieben....aber da kommen recht lustige fehler, hab ich noch nie gesehen!
--------------------Konfiguration: Vektoren - Win32 Debug--------------------
Kompilierung läuft...
main.cpp
c:\dokumente und einstellungen\eminem\desktop\schule\2dhdv\prg c\vektoren\vektoren.h(6) : fatal error C1001: INTERNER COMPILER- FEHLER
(Compiler-Datei "msc1.cpp", Zeile 1786)
Bitte wählen Sie im Menü "?" von Visual C++
den Befehl "Software Service", oder öffnen Sie die Hilfedatei für den Software Service, um weitere Informationen zu erhalten
Vektoren.cpp
c:\dokumente und einstellungen\eminem\desktop\schule\2dhdv\prg c\vektoren\vektoren.h(6) : fatal error C1001: INTERNER COMPILER- FEHLER
(Compiler-Datei "msc1.cpp", Zeile 1786)
Bitte wählen Sie im Menü "?" von Visual C++
den Befehl "Software Service", oder öffnen Sie die Hilfedatei für den Software Service, um weitere Informationen zu erhalten
Fehler beim Ausführen von cl.exe.

Vektoren.exe - 2 Fehler, 0 Warnung(en)


hm.....

Dieser Post wurde am 07.11.2003 um 20:02 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.11.2003, 19:57 Uhr
~Problemkind
Gast


das smiley sollte :\ sein
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: