Kann funktion trotz include nicht finden



  • 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 Ende

    Und 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 4

    case 1
    case 2
    case 3
    case 4


Anmelden zum Antworten