Weshalb funktioniert dieser Stil bei dem einen Programm, aber bei dem anderen nicht ?



  • Hallo,

    ich habe hier eine kleine Mitarbeiterverwaltung geschrieben in welcher folgender Teil vorkommt:

    int main() {
    
    	Mitarbeiter *feld[3];           // erzeuge zeiger vom typ   mitarbeiter
    
        // zeiger[nr.] = zeigt auf neuen typ
    	feld[0] = new Manager(" Max Müller", 140);   // übergebe dem konstr. einen string und int
    

    und das klappt auch soweit. möchte ich denn auf methoden "zugreifen" mache ich dies über den -> operator.... soweit so gut.

    in einem anderen programm versuche ich etwas ähnliches, nur innerhalb einer klasse:

    int Hochschule::einschreiben() {
    
    	Hochschule *student[10];
    	string nombre;
    
    	cout << "Sie möchten sich in einen Studiengang einschreiben." << endl << endl << "Bitte geben Sie den Namen des Studiengangs ein: ";
    	cin >> nombre;
    
    	student[0] = new Student->set_name(nombre);
    
    	return 0;
    }
    

    bin zwar damit noch nicht fertig, aber jetzt schon wird der "="-operator untermalt mit der meldung:

    Schweregrad	Code	Beschreibung	Projekt	Datei	Zeile	Unterdrückungszustand
    Fehler (aktiv)	E0513	Ein Wert vom Typ ""int"" kann keiner Entität vom Typ ""Student *"" zugewiesen werden.	Hochschule	c:\Users\Test\source\repos\Hochschule\Hochschule\Hochschule.cpp	18
    

    Aber weshalb ? was meint er mit typ int ?

    grüße Smuji

    Edit Arcoth: Code-Tags



  • Mein Plan ist es, die Hauptgruppe Hochschule zu haben und über diese können sich Studenten in Studiengänge einschreiben.

    Zudem gibt es die Klasse Student und dann die Klasse Studiengang.

    Es soll zur Laufzeit ein neues Objekt vom Typ Student erzeugt werden.



  • Naja, das eine Mal rufst du den Konstruktor auf (in dem Fall der funktioniert) und in dem anderen Fall rufst du irgendwas komisches auf, was ich anhand deines Schnipsels nicht näher spezifizieren kann, was aber so nie funktionieren wird.

    Und ansonsten muss ihc noch darauf hinweisen, dass man new / delete in den meisten Fällen in modernem Code nicht verwenden sollte, aber das fällt dir alles mit der Zeit auch noch auf.



  • versuche ich etwas ähnliches

    Nein, tust du nicht. Warum nicht? Fehlt ein passender Konstruktor?

    Benutze std::vector<Student>, nicht new.



  • Hochschule *student[10]
    

    Das ist wohl irgendwie verdreht, oder?



  • danke, habe meinen fehler gesehen. auch dass man new und delete nicht mehr benutzt, ist mir bekannt, allerdings SOLLEN wir das benutzen...leider...


Anmelden zum Antworten