Koordinatenfeld in Schleife erzeugen?



  • Hallo!
    Ich möchte eine Klasse schreiben, die ein 10*10-Koordinatenfeld erzeugt. Die Koordinaten sind wiederum eine Klasse mit x,y, und 0 oder 1 als Membervariablen.
    Jetzt dachte ich mir, ich könnte die 100 x- und y-Paare zunächst so erzeugen:

    {
    	for(int y=1;y<11;y++){
    		for(char x='A';x<='J';x++){
    			Koordinate xy();
    			xy.setValue(x,y);
    		}
    	}
    

    Leider ist die letzte Zeile so wohl nicht möglich, das xy. wird nicht akzeptiert.

    Ich kann alternativ natürlich auch jede Koordinate einzeln initialisieren, schließlich sind es immer die selben 100. Aber das geht doch bestimmt auch anders, oder?



  • Koordinate xy();
    

    ist eine Funktionsdeklaration. Mach da mal die Klammern weg. Noch besser: Schreib einen Konstruktor

    Koordinate(int spalte, int zeile)
    

    dann brauchst Du setValue nicht mehr aufzurufen. ZB:

    class Koordinate
    {
      public:
        Koordinate(int spalte, int zeile) : s(spalte), z(zeile){}
    
        ...
    
      private:
        int s;
        int z;
    
        ...
    
    };
    
    ...
    for(int y=1;y<11;y++){
            for(char x='A';x<='J';x++){
                Koordinate xy(x, y);
            }
        }
    

    Aber:
    Die Variable xy ist lokal in der for-Schleife, sie wird bei jedem Schleifendurchlauf erzeugt und wieder zerstört, dh. wenn Deine Schleifen zu Ende gelaufen sind, gibt es keine Variable vom Typ Koordinate mehr, wenn Du sie nicht zwischendurch irgendwo speicherst, das ist Dir klar?



  • [quote="JOberst"
    Leider ist die letzte Zeile so wohl nicht möglich, das xy. wird nicht akzeptiert.
    [/quote]
    Außerdem ist das hier eine unzureichende Fehlerbeschreibung! Da gehört die Fehlermeldung des Compilers hinzu!



  • Danke!

    Belli schrieb:

    Außerdem ist das hier eine unzureichende Fehlerbeschreibung! Da gehört die Fehlermeldung des Compilers hinzu!

    Visual Studio sagt: "Der Ausdruck muss einen Klassentyp aufweisen" - Ich hatte gedacht, mein xy sei in der Zeile davor ein Klassentyp geworden.
    Das mit der Lokalität stimmt natürlich auch, soweit war ich gedanklich noch nicht.


Anmelden zum Antworten