Probleme beim Einlesen



  • Hallo Leute 🙂

    Ich habe folgendes Problem bei meinem Programm:

    Ich versuche grad ein Spiel zu programmieren und dabei eine Karte aus einer Textdatei einzulesen. Damit wir uns nicht falsch verstehen, in der Textdatei stehen entweder Einsen oder Nullen(zum Beispiel 1 0 1 0).
    Die Bedeutung ist jetzt erstmal egal.

    Der Einlese-Algo ist klar, nur bekomme ich eine Fehlermeldung beim Einlesen, welche lautet: [i]error C2679: Binaerer Operator '>>' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class SKarte' akzeptiert (oder keine geeignete Konvertierung moeglich)[i]

    Die class SKarte sieht so aus:

    class SKarte
    {
      public:
        SObjekt Objekt;   
    }Karte[100][100];
    

    Und die Einlesefunktion der Karte für die Textdatei lautet:

    ifstream dat;
    dat.open("karte.cfg", ios::in);        
    for(int i=0,a=0;i<100;++i,a++)
    {
        dat >> Karte[i][a];       
    }
    dat.close();    
    }
    

    Ich hoffe mal, dass ihr meinen Fehler erkannt habt und mir somit auch weiterhelfen könnt.

    mfg gameplayer



  • du versuchst, den gesamten inhalt der datei auf einmal in ein Objekt des Arrays zu speichern. wenn du alles auf einmal einlesen willst, versuch doch folgendes:

    ifstream dat;
    string dateiinhalt; // eigentlich nicht zu empfehlen. lieber zeichenweise einlesen
    dat.open("karte.cfg", ios::in);        
    dat >> dateiinhalt;
    for (int c = 0, i = 0, a = 0; i < 100; ++c)
    {
        if (dateiinhalt[c] == '\n')    { ++i; a = 0; }
        else Karte[i][a++] = dateiinhalt[c]; // wobei die elemente des Arrays Char's sein müssen!
    }
    dat.close();
    


  • Danke für deine Hilfe Korbinian. 🙂

    Nun stellt sich aber immernoch dieses Problem hier. Und zwar dies Fehlermeldung: error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'char' akzeptiert (oder keine geeignete Konvertierung moeglich)

    Ich bedanke mich im voraus für eure Hilfe.

    mfg gameplayer



  • zeig mal die vollständige definition der klassen (auch unterklassen)



  • Hab grad erst angefangen das "Spiel" zu machen. Darum sind es auch erst recht wenig Klassen. Hier die Hauptklassen der Programms.

    class SObjekt
    {
      public:   
        char name[40];
        int farbe;
        int sizex;
        int sizey;
        int clipping;
    }Objekt;
    class SKarte
    {
      public:
        SObjekt Objekt;   
    }Karte[100][100];
    class SPlayer
    {
      public:
        int xpos;
        int ypos;
    } Player;
    

    Btw: Das S vor den Klassenamen steht da, weil ich zuerst Strukturen hatte und dies noch nicht geändert hab. 😉

    mfg gameplayer



  • naja, du solltest dir nochmal genau überlegen, welche infos der karte du in der datei in welcher form drinstehen haben willst. entsprechend baust du dir dann einen konstruktor, der das erstellen von objekten leicht macht.
    Karte[100][100] erstellt übrigens 1000 karten, und nicht 1000 unterobjekte 😃


Anmelden zum Antworten