Konstruktor...
-
..
-
julchatt schrieb:
Hallo Leute,
kann mir bitte jemand sagen was für ein Konstruktor das hiern ist...
PQElement& Maximum(void) const;
Das ist leicht. Das ist kein Konstruktor.
Das ist eine Memberfunktion, die keine Parameter nimmt, auf konstante Objekte angewendet werden darf und eine Referenz auf ein PQElement zurück gibt. (Was übrigens etwas merkwürdig ist, da die Rückgabe einer solchen Referenz zwar technisch möglich ist, aber dem philosophischen sinn der const-ness widerspricht)
Den Rest deines Codes überfliege ich vielleicht, wenn du ihn in lesbarer Form schreibt. Guck dazu mal links unter den Smileys nach dem Button "C/C++".
-
Vielen Vielen Dank, ich habe schon in Büchern gesucht, im Internet und nicht gefunden...danke noch mal!!!
-
#include<iostream> using namespace std; class PQElement { //... int prio; /* hier: p(a) ist eine ganze Zahl */ //... public: int priority(void) const { return prio; } void set_priority(int p) { prio = p; } bool operator < (const PQElement& e) const{ returnpr < e.pr; } }; class PriorityQueue { int n; // aktuelle Laenge int length; // Gesamtlaenge=Aufnahmekapazitaet PQelement *a; // fuer das Feld public: int l; void PriorityQueue(int l=1000){ int length=l; int n=0; int a=new PQElement[length]; } PQElement& Maximum(void) const; //Memberfunktion PQElement Extract_Max(void); void Insert(const PQElement& anew); //fügt das Objekt anew hinter dem letzten Element des Stacks ein } void DownHeap(int i, int n, int a[n]); void DownHeap(int i, int n, int a[n]){ int i,largest,n; int l = 2*i; int r = 2*i+1; if( l <= n && (a[l] > a[i]) ) { largest = l; } else { int largest = i; } if( int r <= n && (a[r] > a[largest]) ) { largest = r; } if( largest != i ) { vertausche(a[i], a[largest]) DownHeap(largest, n, a) } void Insert(); void Maximum(); void ExtractMax(); }[cpp]
-
Da fehlt jetzt zu viel, um zu dem Code konstruktive Kritik abzugeben (vielleicht möchtest du auch gar keine und stattdessen alles selber machen). Es sieht aber so aus, als fehlten dir ein passender Kopierkonstruktor, Zuweisungsoperator und Destruktor. Oder besser: Du lässt die manuelle Speicherverwaltung gleich ganz sein und wählst stattdessen eine passende Klasse aus der Standardbibliothek, um deine Daten zu halten. Die bringen dann in der Regel selber passende Kopierfunktionen und Destruktoren mit, so dass die automatisch erzeugten Varianten das richtige tun.
-
Also die Methoden habe ich noch nicht, also klar, da fehlt noch Vieles was ich noch mache machen muss, stehe noch am Anfang ...muss eine Prioritätswarteschlange in c++ umsetzen...ich versuche es grade)))
-
Was ich noch auch nicht ganz verstehe ist pr, was ist es? e.pr heiß doch, dass e pr afruft....da erfolg doch ein Vergleich zwischen dem übergebener Referenz auch konstantes PQElement mit was????
bool operator < (const PQElement& e) const{
return pr < e.pr;
}
-
julchatt schrieb:
Was ich noch auch nicht ganz verstehe ist pr, was ist es? e.pr heiß doch, dass e pr afruft....da erfolg doch ein Vergleich zwischen dem übergebener Referenz auch konstantes PQElement mit was????
Ich, und vermutlich auch jeder andere, kann dich sprachlich nicht verstehen. Falls Deutsch nicht deine Muttersprache ist, kannst du es auch gerne in anderen Sprachen versuchen, viele hier im Forum sprechen Fremdsprachen fließend.
-
Ok, ich versuche mein Anliegen zu erklären...
Ich habe hier einen Vergleichsoperator:bool operator < (const PQElement& e) const{
return pr < e.pr;
}Was ich nicht zu 100% verstehe ist die folgende Zeile... return pr < e.pr;
-
Wenn pr kleiner ist als e.pr wird true zurück gegeben, sonst false. Da der Operator hier als Memberfunktion implementiert wurde, bezieht sich das pr auf das aufrufende Objekt, also das was links vom Operator steht, wenn er aufgerufen wird. Das e ist das Argument des Operators, das was beim Aufruf rechts steht.
-
Ok, habe ich verstanden,vielen Danke für die Hilfe!! Ich setze mich dann weiter mit dem Programm auseinander)))