Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Alter Hase
Zitat von »"Meandor"«
Ersteinmal super Einfall das mit dem Enum das erleichtert einiges! Ist besser als #define GEMELDET 'G' .
nach den REGISTERED darf kein Semi stehen! Also das schon mal weg lassen. Sonst Compiler Fehler! Zumindest gab es das bei mir!
Zitat von »"Meandor"«
was ich jetzt nicht ganz verstehe ist
C-/C++-Quelltext
1 2 3 4 5 6 bool operator < (Element& e const) const { if(status == REGISTERED && e.status == ACTIVE) return true; return false; }
das ist also eine Funktion innerhalb der Struktur (wußte gar nicht das das geht dachte das klappt nur bei Klassen
Zitat von »"Meandor"«
solche memberfunktionen oder was ist das genau also laut msdn verstehe ich das das neue Wort operator für Overloadings zuständig ist.
Zitat von »"Meandor"«
wie kann ich denn eine solche Funktion dann auf rufen einfach nur sort(); und fertig??
verbiegt diese Funktion dann automatisch die Listenzeiger auf den nachfolgenden bzw dem Vorgänger?
Ansich gibt diese Funktion ja nur eine NULL oder eine 1 aus.
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
Element e1; e1.nr = 0; e1.time = 0; e1.status = ACTIVE; Element e2; e2.nr = 0; e2.time = 0; e2.status = REGISTERED //Hier folgen 2 aufrufe der Operatorfunktion von Element bool b1 = e1 < e2; //b1 bekommt den Wert false bool b2 = e2 < e1; //b2 bekommt den Wert true |
Zitat von »"Meandor"«
Was sollen die zwei const in der einen Zeile?
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
#include <iostream> #include <list> using namespace std; void Liste_ausgeben(); //Prototyp der Funktion Liste_ausgeben() enum STATUS //Definition des Status { AKTIV, GEMELDET }; class Auftragsliste //Die Klasse der Auftragsliste alles public deklariert { public: Auftragsliste(int Wert, double Zeit, STATUS Status) //char status { m_Zeit=Zeit; m_Wert=Wert; m_Status=Status; } double m_Zeit; int m_Wert; STATUS m_Status; //mit enum definiert }; //globale Variablen deklariert! Damit die Funktion Liste_ausgeben() den iterator kennt; list<Auftragsliste*> lAuftrag; list<Auftragsliste*>::iterator i; int main() { int Anzahl =0; Auftragsliste *Temp = NULL; cout <<"Wie viele Aufträge erzeugen?"<<endl; cin>> Anzahl; for (int j=0; j<Anzahl; j++) { Temp = new Auftragsliste(1,1,GEMELDET); lAuftrag.push_back (Temp); } Anzahl=0; for (i=lAuftrag.begin(); i!=lAuftrag.end(); ++i) { cout<<"DAS ELEMENT "<<(*i)->m_Wert<<" wird bei der Zeit :" <<(*i)->m_Zeit<<" der Status : "; if((*i)->m_Status==GEMELDET) cout<<"GEMELDET"<<endl; else cout<<endl; } cout<<endl; for (i=lAuftrag.begin(); i!=lAuftrag.end(); ++i) { (*i)->m_Wert = Anzahl; (*i)->m_Zeit = 500; (*i)->m_Status = GEMELDET; Anzahl ++; } Liste_ausgeben();//Ausgabe der Liste! lAuftrag.insert(lAuftrag.begin(), new Auftragsliste(7,900,GEMELDET)); //Einfügen eines neuen Elementes Liste_ausgeben(); i=lAuftrag.end(); //Iterator zeigt aufs Listenende i--; i--;//Zwei Schritte zurück gehen zeigt jetzt auf das vorletzte Element aus der Liste lAuftrag.erase(i); //Hier wird das vorletzte Element aus der Liste gelöscht cout<<endl; Liste_ausgeben(); //Zur Überprüfung Liste anschauen for (i=lAuftrag.begin(); i!=lAuftrag.end(); i++) //Liste aus dem Heap wieder komplett freigeben! { delete (*i); (*i) = NULL; } lAuftrag.clear(); return 0; }//main void Liste_ausgeben() //Definition der Funktion Liste_ausgeben() { for (i=lAuftrag.begin(); i!=lAuftrag.end(); ++i) { cout<<"DAS ELEMENT "<<(*i)->m_Wert<<" wird bei der Zeit :" <<(*i)->m_Zeit<<" der Status : "; if((*i)->m_Status==GEMELDET) cout<<"GEMELDET"<<endl; } cout<<endl; } |
C-/C++-Quelltext |
|
1 |
bool operator < (Element& e const) const |
Alter Hase
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
struct s_int { __int32 i; __int32 operator + (s_int const& s) { return i + s.i; } __int32 add(s_int const& s) { return i + s.i; } }; s_int s1_op, s2_op; s_int s1_func, s2_func; s1_op.i = 100; s2_op.i = 200; s1_func.i = 100; s2_func.i = 200; s_int s3_op = s1_op + s2_op; //s3_op is 300 then s_int s3_func = s1_func.add(s2_func); //s3_func is 300 then |
Werbeanzeige