Einfach Übung, viele große Fehler!
-
EOutOfResources schrieb:
pumuckl schrieb:
Ausgabe(&MeinVektor);
sry habs korrigiert
-
Die beiden Arrays (Da bei array.size) werden mir aber in beiden Funktionen jeweils noch als nicht definiert gemakert.
Array.at ist aber nicht rot.
-
Aha, jetzt seh' ich es. Statt
Arrayschreibst du einfach*ZeigerAufVector(innerhalb der Funktionen).
-
...und ggf auch mit Klammern drumherum, also
(*ZeigerAufVector), da das Sternchen als Präfixoperator weniger stark bindet als[]oder.at.
-
Ach scheiße ich bin echt durcheinander

Welches "Array" meinst du nun? Irgendwie hab ich mich grad verheddert....^^
-
Limatex schrieb:
Welches "Array" meinst du nun?
Ersetzt jedes "
Array" in beiden Funktionen durch "(*ZeigerAufVektor)".
-
Okay, vielen Dank! Hat funktioniert!!

Und was bedeutet das hier in den Klammern? Ist das der "Wert" der dem Zeiger zugewiesen wird oder wie?
Funktion1(&Array); Funktion2(&Array);
-
Limatex schrieb:
Ist das der "Wert" der dem Zeiger zugewiesen wird oder wie?
Ja, ist es. Im Buch deiner Wahl sollte im Zusammenhang mit Zeigern auch der Adressoperator erwähnt werden.
-
Bin ja grad dabei den Code zu optimieren und noch ein paar zusätzliche Funktionen einzubauen. Nun wollte ich die Ausgabe sortieren, doch beide Klammern vor den letzten beiden vorderen Zeigern werden rot gemarkert mit der Begründung "Der Ausdruck muss ein Änderbarer Ivalue sein!
Nachdem ich die beiden = durch == ersetzt habe waren die Klammer zwar weg, aber beim ausführen kam ein neues Fenster:
void Sortieren(const vector<int>*Zeiger) { int hilf; for(size_t i2=0;i2<(*Zeiger).size();i2++) { for(size_t i=0;i<(*Zeiger).size();i++) { if((*Zeiger).at(i+1)>(*Zeiger).at(i)) { hilf=(*Zeiger).at(i); (*Zeiger).at(i)==(*Zeiger).at(i+1); (*Zeiger).at(i+1)==hilf; } } } }http://img232.imageshack.us/img232/8312/capturemk.jpg
LG
EDIT: bzw. kommt jetzt wo ich die normalen[] Arrays zu .at() gemacht habe eine andere reihe von fenster welche aber auch etwas von out of range erzählt!
-
-
statt (*Zeiger).bla kannst du auch Zeiger->bla schreiben. Lies dir wirklich mal das Kapitel über Zeiger im C++-Buch deiner Wahl durch.
-
Die Meldung "Ausdruck muss ein änderbarer lvalue sein" bezieht sich vor allem auf das änderbar. Du hast den Zeiger in der Argumentliste so deklariert, dass es ein Zeiger auf const ist, d.h. dass der vector, auf den der Zeiger zeigt, nicht verändert werden darf. Die Zuweisung auf das Element ändert aber den vector, das widerspricht sich also.
-
Nehmen wir an, size() sei 10. Überleg mal, was in der inneren Schleife passiert, wenn i 9 ist, vor allem was beim zweiten at()-Aufruf übergeben wird. Dann weißt du auch woher die Fehlermeldung kommt.
-
== und = sind zwei völlig unterschiedliche paar Schuhe, ich hoffe du weißt das.
-