Kann funktion trotz include nicht finden
-
In der ersten case Anweisung benutz du if:
if(...) //kein break; fehler else break;Kommt diese fehler immer noch
ctrlStepArray.obj : error LNK2005: "class datenbank db" (?db@@3Vdatenbank@@A) already defined in racer_main.obj
-
Jo, das hatte ich nur zum ausprobieren.
ich versteh nicht warum das nicht geht
Egal was ich machen, er springt immer weiter zu case 2
Nee die ganzen linkerfehler sind jetzt weg(dank extern), VielenDank!!! dafür

greetz johnc.
-
case 1: if (stepArray[wordpos].y-1 >= 0) { ctrl = ctrlStAr(0,-1, wordpos); if (ctrl == false) { int x = stepArray[wordpos].x; int y = stepArray[wordpos].y-1; stepArray[wordpos].iStep = i; routine(x,y,wordpos); } } break; // break am ende case 2: if ((stepArray[wordpos].x+1 <= ct)&&(stepArray[wordpos].y-1 >= 0))
-
So hatte ich das ursprünglich, er springt aber dennoch zu case 2 ohne zur schleife zu kommen

greetz johnC++
-
so hab jetzt in vc++ 2008 neues projekt gelegt, die dateien einfach reinkopiert, und siehe da es geht

ich hab einfach nur dei dateien ins projekt "geaddet".
greetz johnC++
-
oh dann muss der fehler hier liegen.
i++for (int i=stepArray[wordpos].iStep; i<=8; i++)
-
Ramsis schrieb:
oh dann muss der fehler hier liegen.
Sorry, aber das ist Schwachsinn und mit 100% Sicherheit nicht das Problem... Und davon abgesehen ist im Zweifel ++i immer i++ vorzuziehen. Dazu gibt es aber einen eigenen Thread.
cu André
-
asc schrieb:
Sorry, aber das ist Schwachsinn und mit 100% Sicherheit nicht das Problem... Und davon abgesehen ist im Zweifel ++i immer i++ vorzuziehen. Dazu gibt es aber einen eigenen Thread.
1. Naja werden wir sehen!
2. Das ist ein C Array, diese beiden operatoren werden von Compiler
bereitgestellt ( ++i und i++ ), die anderen die du meinst sind die überladene
Operatoren der STL ( std::vector, std::map, ... ), dort gilt was du gesagt hast,
bei C Arrays ist es ein bischen anders.
-
zu 2.
i ist kein Array, i ist ein Integer. Und was hat das eine mit dem anderen zu tun?zu 1.
Begründe doch bitte mal wieso der Fehler bei i++ liegt.
-
Ramsis schrieb:
die anderen die du meinst sind die überladene
Operatoren der STL... Wo sind hier Beim Inkrement/Deinkrement überladene Operatoren der STL (oder wo bitte ist hier das Thema STL gefallen)? Und das i kein Array ist, wurde ja auch schon erwähnt.
cu André
-
Hab gerade ausprobiert, du hattest recht.

Diese beiden for schleifen machen genau das gleiche.#include <iostream> using namespace std; int main(void) { for( int i = 0; i<=4; i++) { switch(i) { case 0: cout << "case 0" << endl; break; case 1: cout << "case 1" << endl; break; case 2: cout << "case 2" << endl; break; case 3: cout << "case 3" << endl; break; case 4: cout << "case 4" << endl; break; } } cout << endl << endl; for( int i = 0; i<=4; ++i) { switch(i) { case 0: cout << "case 0" << endl; break; case 1: cout << "case 1" << endl; break; case 2: cout << "case 2" << endl; break; case 3: cout << "case 3" << endl; break; case 4: cout << "case 4" << endl; break; } } return 0; }
-
Ramsis schrieb:
Hab gerade ausprobiert, du hattest recht.

Diese beiden for schleifen machen genau das gleiche.Wie sollten sie auch etwas anderes machen? Ich hatte die Erklärung für for-Schleifen schon einmal kurz gemacht:
for(<1>;<2>;<3>)...
1. Einmalig am Anfang
2. Prüfung einmal pro Schleifenbegin
3. Einmal pro Schleifendurchlauf am EndeUnd wenn du in eine Zeile "++i;" statt "i++;" schreibst macht dies nunmal keinen Unterschied (außer das beim i++ unter Umständen eine temporäre Kopie erzeugt wird, was bei ++i nicht der Fall sein sollte - es sei den irgendwer hält sich nicht an die Üblichen Implementierungsregeln).
cu André
-
Mein logikfehler
war, dass diese ++ beiden Operatoren (post, pre )
seiteneffekte auch in der for schleife produzieren, was nicht der fall ist.ausgabe der beiden for schleifen mit dem logikfehler:
case 0
case 1
case 2
case 3
case 4case 1
case 2
case 3
case 4