Vom Client auf andere Klassen zugreifen wie? (C++)



  • Hallo liebe Community!

    Ich programmiere momentan eine AbitursKlausur (Dort geht es um das Thema Probanden und Studien zu (Krankheiten) und möchte gerne eine zusätzliche Möglichkeit einbauen, wo ich im Menü aufrufe "Alle Studien anzeigen". Dort sollen dann die ganzen Daten aus meiner Liste mit dem entsprechenden Inhalt angezeigt werden. Anscheinend sollen wir keinen Zeiger aus der Klasse in die Client Klasse hinzufügen. Ich habe sonst aber absolut keine Ideen, wie ich das vielleicht machen könnte.

    Von der Main rufe ich den Client auf und in der Klasse rufe ich dann das Menü auf:

    void BewerberClient::menu()
    
    {
    	int auswahl = 0;
    	cout << " Waehlen Sie zwischen folgenden Optionen aus: " << endl;
    	cout << "[0] Beenden" << endl;
    	cout << "[1] Als Proband bewerben" << endl;
    	cout << "[2] Alle Studien anzeigen" << endl;
    	//cout << "[3] Registrieren" << endl;
    
    	cin >> auswahl;
    	switch (auswahl) {
    
    	case 0: break;
    
    	case 1:system("cls"); bewerben(); break;
    	
    	case 2: system("cls"); //Funktion folgt 
    		break;
    	}
    
    	
    
    
    }
    

    In dem Menü soll eine Funktion folgen, wo ich alle Datensätze einer Liste aus einer anderen Klasse einlesen soll, OHNE diese als Zeiger oder Liste in der BewerberClient.h anzugeben. Wie kann ich das machen? Ich muss da ja irgendwie eine Instanz rübergeben, sonst kann ich ja nicht drauf zugreifen.



  • Ich nehme 0.



  • Das von Dir gezeigte BewerberClient::menu() könnte genausogut eine freie Funktion sein. Also weiß ich nicht was Du von Instanz schwafelst.



  • Glaube du musst etwas mehr Code zeigen. Dein Problem ist mir zumindest nicht wirklich klar.



  • Liebe/r Master_Su,
    Du musst Dich schon etwas genauer ausdrücken. Erstmal wäre es hilfreich, wenn Du dein Klassenmodel mal vorstellen würdest. Wer soll was machen.
    Dann kann ich nicht genau verstehen, was Du mit "alle Datensätze einer Liste aus einer anderen Klasse einlesen soll, OHNE diese als Zeiger oder Liste in der BewerberClient.h anzugeben" meinst.
    Was heißt hier "anzugeben"?
    Wenn diese Liste von Studien angezeigt werden soll, muss diese natürlich in der Funktion (freie Funktion oder Klassen-Methode?) bewerben() irgendwie zugänglich sein.
    Es ist mir auch unklar, was Du mit "Anscheinend sollen wir keinen Zeiger aus der Klasse in die Client Klasse hinzufügen" meinst. Sollen keine Zeiger, also Pointer genutzt werden, oder nicht als Parameter übergeben werden? Sind ggf. dann Referenzen bzw. ein auf dem Stack erstelltes Objekt erlaubt?
    Möglich wäre dann noch ein statisches Objekt, also ein Objekt mit nur statischen Attributen und Methoden…
    Na ja, zu wenig Informationen.



  • Was hier allgemein unklar ist, ist die Aufgabenverteilung.

    • Was ist ein "BewerberClient"?
    • Wer bewirbt sich wo?
    • Wessen Aufgabe ist es, ein Menü anzuzeigen?
    • Gibt es Klassen "Proband", "Studie"? Und wer ist für die Verwaltung von Probanden / Studien zuständig? Ist ein Bewerber vielleicht ein Proband, der einfach noch keiner Studie zugeordnet wurde?

    Fragen über Fragen und bestimmt mehrere Lösungsmöglichkeiten. Du solltest nur sicherstellen, dass der Zuständigkeitsbereich deiner Klassen jeweils klar ist und auch klar ist, wie die so zusammenspielen sollen.

    Das muss erstmal alles klar sein, bevor du überhaupt mit so Dingen wie BewerberClient.h rumwerfen solltest. Wie das ganze auf Dateien aufgeteilt ist, hat ja mit dem generellen Problem erstmal wenig zu tun. Du kannst theoretisch auch immer alles in eine Datei schreiben (nicht dass das bei größeren Projekten empfehlenswert wäre, aber bei kleinen Testprogrammen durchaus eine Möglichkeit, finde ich).

    PS: und das, was @Helmut-Jakoby geschrieben hat (ich hatte diesen Beitrag angefangen, als der von Helmut noch nicht da war).


Log in to reply