zuweisungsoperator überladen...



  • hab eine Klasse die bis jetzt mal so aussieht:

    class Pruefung
    
    {
    
    public:
    	char* name;
    	char* datum;
    	char* ort;
    	char* pruefer;
    	int note;
    public:
    
    	Pruefung(char* nameP)
    	{name=nameP;
    	}
    
    	Pruefung(char* nameP, char* date, char* ortP)
    	{
    	name = nameP;
    	datum=date;
    	ort=ortP;
    	}
    
    	Pruefung(char* nameP, char* date, char* ortP, char* pruef)
    	{
    	name = nameP;
    	datum=date;
    	ort=ortP;
    	pruefer=pruef;
    	}
    
    	void print();
    	void ergebnis();
    
    	Pruefung& operator=(const Pruefung& p);
    	Pruefung& operator=(int noteP);
    
    ....}
    

    das war noch eher der leichtere teil 😉 (dürfen nur iostream.h als include verwenden)

    mein problem ist jetzt, wie ich am besten den zuweisungsoperator überladen soll...

    lt angabe soll das möglich sein:
    Pruefung itep("c++ vo", "30.01.2004", "HS1", "Prof1");
    Pruefung mathe("Mathe", "29.01.2004", "HS2", "Prof2");
    itep = 1; hier soll (so nehm ich an, eine note einem objekt zugewiesen werden
    mathe = itep;

    das ist mal mein veruch, der leider nicht funktioniert...

    Pruefung& Pruefung::operator=(const Pruefung& p){
    	if (this == &p)
    		return *this;
    
    	name=p.name;
    	return *this;
    
    	}	
    
    	Pruefung& Pruefung::operator=(int noteP){
    	name=noteP;
    	return *this;
    

    vielleicht kann mir jemand verständlich erklären, wie das ding
    funktionieren soll...komm auf keinen grünen zweig... 😞



  • "name" ist kein int.

    Bye, TGGC (Denken, und gut ist.)



  • dass es daran liegt, hab ich mir eh fast gedacht, aber wie löse ich es dann? in meinen büchern u. im internet hab ich keine passende erklärung gefunden... 😡



  • Hi,

    wo ist denn dein Problem? Wenn du ein int zuweisen willst, kommt doch auch nur eine deiner Membervariablen in Frage.

    EDIT: Sicher, dass der erste Teil "public" sein soll?



  • Versteh nicht ganz was du meinst...brauche dringend Hilfe.. 😞



  • Du hast doch Deine Variablennamen so gewählt, dass man vom Namen darauf schliessen kann, was darin gespeichert wird. Erscheint es Dir da nicht komisch, dass Du versuchst, einer Variablen, die offensichtlich einen Namen speichern soll, eine Zahl zuzuweisen?



  • Asgard schrieb:

    Du hast doch Deine Variablennamen so gewählt, dass man vom Namen darauf schliessen kann, was darin gespeichert wird. Erscheint es Dir da nicht komisch, dass Du versuchst, einer Variablen, die offensichtlich einen Namen speichern soll, eine Zahl zuzuweisen?

    Aber ich soll ja laut angabe:

    itep = 1;
    möglich sein...

    Für mich klingt das wie wenn eine note einem objekt zugewiesen werden soll...
    Oder ich hab die Angabe falsch verstanden...


  • Mod

    [cpp]
    Pruefung& Pruefung::operator=(int noteP){
    name=noteP; // wieso name?
    return *this;
    [/cpp]



  • Für mich klingt das wie wenn eine note einem objekt zugewiesen werden soll...

    ja, und in welchem member speichert deine klasse die note?



  • Pruefung& Pruefung::operator=(int noteP){
        	note=noteP;  // wieso name?
        	return *this;
    

    stimmts so? dh. die aufgabe: itep=1 wäre somit erledigt?



  • genau! aber deinen anderen zuweisungsoperator bzw. überhaupt deinen umgang mit char* solltest du überprüfen!



  • meine klasse unisemester sieht bis jetzt so aus:

    public:	
    	enum art {Sommer, Winter};
    	art semester;
    
    	art artS;
    	char* beginn;
    	char* ende;
    	char* orgplan;
    	int fakultaeten;
    public:
    
    	Unisemester(art art_init)
    	{
    	artS=art_init;
    	}
    
    	Unisemester(art art_init, char* beginnS, char* endeS, char* orgplanS, int fak)
    	{
    		semester=art_init;
    		beginn=beginnS;
    		ende=endeS;
    		orgplan=orgplanS;
    		fakultaeten=fak;
    	}
    };
    

    welche operator methode muss ich nehmen, wenn diese anwendung möglich sein soll:
    Unisemester ss2001("Sommer");

    das ganze soll so eine art kalender werden, indem man die anzahl der fakultäten einem Semester zuordnen soll...


Anmelden zum Antworten