Auf Objekt zugreifen
-
Hallo Forum :),
ich habe ein kleines Problem

Ich habe 2 Klassen:
specialprogramm: durch neuesangebot() erzeuge ich ein objekt von angebote und gebe es ein string titel, int id , int plätze etc..
und
angebote: besteht aus titel, id , plätze etc..
nun habe ich das problem dass ich gucken muss ob es noch freie plätze gibt in einem angebot.
Meine Frage nun, wie kann ich im Main auf ein bestimmtes objekt zugreifen, wenn ich nicht weiß wie das objekt heißt, sondern zB nur die ID habe?
Vielen Dank schonmal!

-
Ich bin mir nicht ganz sicher ob ich dein Problem richtig verstanden habe. Die Frage ist etwas schwer zu verstehen.
Ich denke du kannst dafür eine Hashmap verwenden, die eine ID (der Schlüssel der Hashmap) einem Angebot (den Wert) zuordnet.
-
Was machst du, wenn du einen Stapel ausgedruckte Angebote vor dir auf dem Tisch liegen hast und das mit einer bestimmten Id suchst?
-
ok ich glaube es hilft vielleicht wenn ich ein wenig code dazu gebe ^^
specialprogramm.h
#include "angebote.h" class specialprogramm { public: void angebotEintragen(); void angeboteAnzeigen(); private: vector<Angebot> angebotsListe; };angebote.h
class Angebot { public: void kindAufnehmen(Kind kind); int freiePlaetze(); bool istVoll(); Angebot(string titel, int plaetze); int getId() const { return id; } int getPlaetze() const { return plaetze; } string getTitel() const { return titel; } private: int plaetze; string titel; int id; vector<Kind> teilnehmer; bool voll; };so in der main ist über ein switch, ein Menü ausgelegt.
mit der 1 neuer eintrag, mit der 2 alle anzeigen, nun möchte ich in einen angebot jemanden anmelden. die id wird mit einen static int(jedes mal inkrementiert), der im konstruktor ist, zu einem objekt zugewiesen.
zurück zu meiner frage, ich möchte in der main auf ein objekt der klasse Angebot zugreifen.
ich hoffe das ist jetzt etwas verständlicher geworden

-
In der main-Funktion hast du ein Objekt der Klasse specialprogramm, richtig?
Dann kannst du specialprogramm eine Funktion getAngebotByID (denglisch
) anlegen und darüber das Angebot raussuchen und zurückgeben, wenn es existiert. Raussuchen geht ungefähr so:find_if(begin(angebotsListe), end(angebotsListe), [](const Angebot &a){return a.getID() == ID;});
-
@nwp3
erstmal vielen Dank für deine Antwort!

sieht nach ein sehr cooles Verfahren an (muss ich mir auf jeden Fall nochmal anschauen), leider hatten wir das noch nicht in der Vorlesung. Lieber etwas nutzen was wir kennen, ich habe es anderweitig lösen können.
Habe es in der specialprogramm.cpp programmiert, und somit konnte ich auf das private attribut "liste" zugreifen, und durch den id durchsuchen.
Trotzdem danke an alle die sich die Zeit genommen haben
