Fehler



  • Hallo Leute ich hab eine Klasse geschrieben, hab jetzt aber vier mir nicht bekannte Fehlermeldungen. Die Klasse:

    /*------------------- includes -------------------*/
    #include <cstdlib>
    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    /*------------------- define ---------------------*/
    #define puffer_size 255
    #define Ini "data/gebaude.ini"
    #define Kosten "data/kosten.dat"
    #define Produktion "data/produktion.dat"
    #define Verbrauch "data/verbrauch.dat"
    #define Bauzeit "data/bauzeit.dat"
    
    /*------------------- class & struct -------------*/
    
    class Gebaude
    {
          private:
                  int baurohstoffe;
                  int nahrungsmittel;
                  int handelsrohstoffe;
                  int ***kosten;
                  int **bauzeit;
                  int anzahlGebaude;
                  int ***verbrauchNahrungsmittel;
                  int ***verbrauchHandelsrohstoffe;
                  int ***produktionBaurohstoffe;
                  int ***produktionNahrungsmittel;
                  int ***produktionHandelsrohstoffe;
                  int stufen;
                  int ***verbrauchBaurohstoffe;
                  int *wertBaurohstoffe;
                  int *wertNahrungsmittel;
                  int *wertHandelsrohstoffe;
                  string *nameBaurohstoffe;
                  string *nameNahrungsmittel;
                  string *nameHandelsrohstoffe;
                  string *gebaudeName;
    
          public:
                 int Baurohstoffe()            //Ausgabefunktionen
                 {
                     return baurohstoffe;
                 };
    
                 int Nahrungsmittel()
                 {
                     return nahrungsmittel;
                 };
    
                 int Handelsrohstoffe()
                 {
                     return handelsrohstoffe;
                 };
    
                 int AnzahlGebaude()
                 {
                     return anzahlGebaude;
                 };
    
                 int Stufen()
                 {
                     return stufen;
                 };
    
                 int Kosten(int gebaude, int stufe, int rohstoff)
                 {
                     if (gebaude>anzahlGebaude-1) return 0;
                     else if (stufe>stufen-1) return 0;
                     else if (rohstoff>baurohstoffe-1) return 0;
                     return kosten[gebaude][stufe][rohstoff];
                 };
    
                 int Bauzeit(int gebaude, int stufe)
                 {
                     if (gebaude>anzahlGebaude-1) return 0;
                     else if (stufe>stufen-1) return 0;
                     return bauzeit[gebaude][stufe];
                 };
    
                 int VerbrauchBaurohstoffe(int gebaude, int stufe, int rohstoff)
                 {
                     if (gebaude>anzahlGebaude-1) return 0;
                     else if (stufe>stufen-1) return 0;
                     else if (rohstoff>baurohstoffe-1) return 0;
                     return verbrauchBaurohstoffe[gebaude][stufe][rohstoff];
                 };
    
                 int VerbrauchNahrungsmittel(int gebaude, int stufe, int rohstoff)
                 {
                     if (gebaude>anzahlGebaude-1) return 0;
                     else if (stufe>stufen-1) return 0;
                     else if (rohstoff>nahrungsmittel-1) return 0;
                     return verbrauchNahrungsmittel[gebaude][stufe][rohstoff];
                 };
    
                 int VerbrauchHandelsrohstoffe(int gebaude, int stufe, int rohstoff)
                 {
                     if (gebaude>anzahlGebaude-1) return 0;
                     else if (stufe>stufen-1) return 0;
                     else if (rohstoff>handelsrohstoffe-1) return 0;
                     return verbrauchHandelsrohstoffe[gebaude][stufe][rohstoff];
                 };           
    
                 int ProduktionBaurohstoffe(int gebaude, int stufe, int rohstoff)
                 {
                     if (gebaude>anzahlGebaude-1) return 0;
                     else if (stufe>stufen-1) return 0;
                     else if (rohstoff>baurohstoffe-1) return 0;
                     return produktionBaurohstoffe[gebaude][stufe][rohstoff];
                 };
    
                 int ProduktionNahrungsmittel(int gebaude, int stufe, int rohstoff)
                 {
                     if (gebaude>anzahlGebaude-1) return 0;
                     else if (stufe>stufen-1) return 0;
                     else if (rohstoff>nahrungsmittel-1) return 0;
                     return produktionNahrungsmittel[gebaude][stufe][rohstoff];
                 };
    
                 int ProduktionHandelsrohstoffe(int gebaude, int stufe, int rohstoff)
                 {
                     if (gebaude>anzahlGebaude-1) return 0;
                     else if (stufe>stufen-1) return 0;
                     else if (rohstoff>handelsrohstoffe-1) return 0;
                     return produktionHandelsrohstoffe[gebaude][stufe][rohstoff];
                 };
    
                 int WertBaurohstoff(int rohstoff)
                 {
                     if (rohstoff>baurohstoffe-1) return 0;
                     return wertBaurohstoffe[rohstoff];
                 };
    
                 int WertNahrungsmittel(int rohstoff)
                 {
                     if (rohstoff>nahrungsmittel-1) return 0;
                     return wertNahrungsmittel[rohstoff];
                 };
    
                 int WertHandelsrohstoff(int rohstoff)
                 {
                     if (rohstoff>handelsrohstoffe-1) return 0;
                     return wertHandelsrohstoffe[rohstoff];
                 };
    
                 string GebaudeName(int gebaude)
                 {
                     if  (gebaude>anzahlGebaude-1) return "error";
                     return gebaudeName[gebaude];
                 };
    
                 string NameBaurohstoff(int rohstoff)
                 {
                     if (rohstoff>baurohstoffe) return "error";
                     return nameBaurohstoffe[rohstoff];   
                 };
    
                 string NameNahrungsmittel(int rohstoff)
                 {
                     if (rohstoff>nahrungsmittel) return "error";
                     return nameNahrungsmittel[rohstoff];
                 };
    
                 string NameHandelsrohstoff(int rohstoff)
                 {
                     if (rohstoff>handelsrohstoffe) return "error";
                     return nameHandelsrohstoffe[rohstoff];
                 };
    
                 bool Load()                               //Funktion zum Laden der Daten aus der Einstellungsdatei
                 {
                      char puffer[puffer_size] = " ";            //Datenpuffer
                      baurohstoffe = GetPrivateProfileInt("Einstellung", "Anzahl_Baurohstoffe", 0, Ini);
                      nahrungsmittel = GetPrivateProfileInt("Einstellung", "Anzahl_Nahrungsmittel", 0, Ini);
                      handelsrohstoffe = GetPrivateProfileInt("Einstellung", "Anzahl_Handelsrohstoffe", 0, Ini);
                      anzahlGebaude = GetPrivateProfileInt("Einstellung", "Anzahl_Gebaude", 0, Ini);
                      stufen = GetPrivateProfileInt("Einstellung", "Anzahl_Stufen", 0, Ini);
                      gebaudeName = new string[anzahlGebaude];                      //Erstellen der Arrays
                      nameBaurohstoffe = new string[baurohstoffe];
                      nameNahrungsmittel = new string[nahrungsmittel];
                      nameHandelsrohstoffe = new string[handelsrohstoffe];
                      wertBaurohstoffe = new int[baurohstoffe];
                      wertNahrungsmittel = new int[nahrungsmittel];
                      wertHandelsrohstoffe = new int[handelsrohstoffe];
    
                      bauzeit = new int*[anzahlGebaude];
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                            bauzeit[i] = new int[stufen];
                      };
                      kosten = new int**[anzahlGebaude];
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          kosten[i] = new int*[stufen];
                          for (int z=0; z<stufen; z++)
                          {
                              kosten[i][z] = new int[baurohstoffe];
                              for (int x=0; x<baurohstoffe; x++)
                              {
                                  kosten[i][z][x] = 0;
                              };
                          };
                      };
    
                      verbrauchBaurohstoffe = new int**[anzahlGebaude];
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          verbrauchBaurohstoffe[i] = new int*[stufen];
                          for (int z=0; z<stufen; z++)
                          {
                              verbrauchBaurohstoffe[i][z] = new int[baurohstoffe];
                              for (int x=0; x<baurohstoffe; x++)
                              {
                                  verbrauchBaurohstoffe[i][z][x] = 0;
                              };
    
                          };
                      };
    
                      verbrauchNahrungsmittel = new int**[anzahlGebaude];
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          verbrauchNahrungsmittel[i] = new int*[stufen];
                          for (int z=0; z<stufen; z++)
                          {
                              verbrauchNahrungsmittel[i][z] = new int[nahrungsmittel];
                              for (int x=0; x<nahrungsmittel; x++)
                              {
                                  verbrauchNahrungsmittel[i][z][x] = 0;
                              };
                          };
                      };
    
                      verbrauchHandelsrohstoffe = new int**[anzahlGebaude];
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          verbrauchHandelsrohstoffe[i] = new int*[stufen];
                          for (int z=0; z<stufen; z++)
                          {
                              verbrauchHandelsrohstoffe[i][z] = new int[handelsrohstoffe];
                              for (int x=0; x<handelsrohstoffe; x++)
                              {
                                  verbrauchHandelsrohstoffe[i][z][x] = 0;
                              };
                          };
                      };
    
                      produktionBaurohstoffe = new int**[anzahlGebaude];
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          produktionBaurohstoffe[i] = new int*[stufen];
                          for (int z=0; z<stufen; z++)
                          {
                              produktionBaurohstoffe[i][z] = new int[baurohstoffe];
                              for (int x=0; x<baurohstoffe; x++)
                              {
                                  produktionBaurohstoffe[i][z][x] = 0;
                              };
                          };
                      };
    
                      produktionNahrungsmittel = new int**[anzahlGebaude];
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          produktionNahrungsmittel[i] = new int*[stufen];
                          for (int z=0; z<stufen; z++)
                          {
                              produktionNahrungsmittel[i][z] = new int[nahrungsmittel];
                              for (int x=0; x<nahrungsmittel; x++)
                              {
                                  produktionNahrungsmittel[i][z][x] = 0;
                              };
                          };
                      };
    
                      produktionHandelsrohstoffe = new int**[anzahlGebaude];
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          produktionHandelsrohstoffe[i] = new int*[stufen];
                          for (int z=0; z<stufen; z++)
                          {
                              produktionHandelsrohstoffe[i][z] = new int[handelsrohstoffe];
                              for (int x=0; x<handelsrohstoffe; x++)
                              {
                                  produktionHandelsrohstoffe[i][z][x] = 0;
                              };
                          };
                      };
    
                      //Alle erstellten Arryas leeren
    
                      for (int i=0; i<baurohstoffe; i++)
                      {
                          wertBaurohstoffe[i] = 0;
                      };
                      for (int i=0; i<nahrungsmittel; i++)
                      {
                          wertNahrungsmittel[i] = 0;
                      };
    
                      for (int i=0; i<handelsrohstoffe; i++)
                      {
                          wertHandelsrohstoffe[i] = 0;
                      };    
    
                      //Einlesen der Daten
    
                      char temp[20] = " ";                     //Hilfsvariable
                      char sektion[255] = "Baurohstoff";       //die Sektion, die gelesen werden soll
                      for (int i=0; i<baurohstoffe; i++)
                      {
                          itoa(i, temp, 10);
                          for (int z=0; z<20; z++)
                          {
                              sektion[z+11] = temp[z];
                          };
                          GetPrivateProfileString(sektion, "Name", "error", puffer, puffer_size, Ini);
                          nameBaurohstoffe[i] = puffer;
                          wertBaurohstoffe[i] = GetPrivateProfileInt(sektion, "Wert", 0, Ini);
                      };
                      strcpy(sektion, "Nahrungsmittel");
                      for (int i=0; i<nahrungsmittel; i++)
                      {
                          itoa(i, temp, 10);
                          for (int z=0; z<20; z++)
                          {
                              sektion[z+14] = temp[z];
                          };
                          GetPrivateProfileString(sektion, "Name", "error", puffer, puffer_size, Ini);
                          nameNahrungsmittel[i] = puffer;
                          wertNahrungsmittel[i] = GetPrivateProfileInt(sektion, "Wert", 0, Ini);
                      };
                      strcpy(sektion, "Handelsrohstoffe");
                      for (int i=0; i<handelsrohstoffe; i++)
                      {
                          itoa(i, temp, 10);
                          for (int z=0; z<20; z++)
                          {
                              sektion[z+15] = temp[z];
                          };
                          GetPrivateProfileString(sektion, "Name", "error", puffer, puffer_size, Ini);
                          nameHandelsrohstoffe[i] = puffer;
                          wertHandelsrohstoffe[i] = GetPrivateProfileInt(sektion, "Wert", 0, Ini);
                      };
                      strcpy(sektion, "Gebaude");
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          itoa(i, temp, 10);
                          for (int z=0; z<20; z++)
                          {
                              sektion[z+6] = temp[z];
                          };
                          GetPrivateProfileString(sektion, "Name", "error", puffer, puffer_size, Ini);
                          gebaudeName[i] = puffer;
                      };
                      FILE* kosten = fopen(Kosten, "r");
                      if (kosten==NULL) return false;
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          for (int z=0; z<stufen; z++)
                          {
                              for (int y=0; y<baurohstoffe; y++)
                              {
                                  fgets(puffer, puffer_size, kosten);
                                  kosten[i][z][y] = atoi(puffer);
                              };
                          };
                      };
                      fclose(kosten);
                      FILE* bauzeit = fopen(Bauzeit, "r");
                      if (bauzeit==NULL) return false;
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          for (int z=0; z<stufen; z++)
                          {
                              {
                                  fgets(puffer, puffer_size, kosten);
                                  bauzeit[i][z] = atoi(puffer);
                              };
                          };
                      };
                      FILE* produktion = fopen(Produktion, "r");
                      if (produktion==NULL) return false;
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          for (int z=0; z<stufen; z++)
                          {
                              for (int y=0; y<baurohstoffe; y++)
                              {
                                  fgets(puffer, puffer_size, produktion);
                                  produktionBaurohstoffe[i][z][y] = atoi(puffer);
                              };
                              for (int y=0; y<nahrungsmittel; y++)
                              {
                                  fgets(puffer, puffer_size, produktion);
                                  produktionNahrungsmittel[i][z][y] = atoi(puffer);
                              };
                              for (int y=0; y<handelsrohstoffe; y++)
                              {
                                  fgets(puffer, puffer_size, produktion);
                                  produktionHandelsrohstoffe[i][z][y] = atoi(puffer);
                              };
                          };
                      };
                      fclose(produktion);
                      FILE* verbrauch = fopen(Verbrauch, "r"); 
                      if (verbrauch==NULL) return false;
                      for (int i=0; i<anzahlGebaude; i++)
                      {
                          for (int z=0; z<stufen; z++)
                          {
                              for (int y=0; y<baurohstoffe; y++)
                              {
                                  fgets(puffer, puffer_size, verbrauch);
                                  verbrauchBaurohstoffe[i][z][y] = atoi(puffer);
                              };
                              for (int y=0; y<nahrungsmittel; y++)
                              {
                                  fgets(puffer, puffer_size, verbrauch);
                                  verbrauchNahrungsmittel[i][z][y] = atoi(puffer);
                              };
                              for (int y=0; y<handelsrohstoffe; y++)
                              {
                                  fgets(puffer, puffer_size, verbrauch);
                                  verbrauchHandelsrohstoffe[i][z][y] = atoi(puffer);
                              };
                          };
                      };
                      fclose(verbrauch);   
                      return true;
                 };
    
    };
    

    Die Fehlermeldungen:

    69 F:\Eigene Dateien\Handelssimulator\gebaude.hpp expected unqualified-id before string constant
    77 F:\Eigene Dateien\Handelssimulator\gebaude.hpp expected unqualified-id before string constant
    369 F:\Eigene Dateien\Handelssimulator\gebaude.hpp no match for 'operator[]' in '((+(((unsigned int)i) * 32u)) + kosten)[z]'
    382 F:\Eigene Dateien\Handelssimulator\gebaude.hpp no match for 'operator[]' in '
    ((+(((unsigned int)i) * 32u)) + bauzeit)[z]'

    Ich hab die ersten zwei Fehler behoben bekommen, in dem ich die Funktionen umbenannt habe. Wenn ich die Variablen umbenne bleibt der Fehler. Wenn es geht, möchte ich aber die Funktionsnamen behalten.

    mfg liggi1998



  • Vergleiche mal deine defines mit den Funktionsnamen.
    Du solltest sowieso auf defines verzichten und Konstanten dafü nehmen.



  • danke, die ersten zwei Fehler sind behoben, die andern noch nicht.

    mfg liggi1998



  • Die anderen beiden Fehler beruhen auf Namensgleichheit deiner Variablen kosten und bauzeit mit den darüber liegenden FILE-Variablen (360, 374).



  • vielen Danke,
    jetzt funktioniert alles ohne Fehler.
    🙂

    mfg liggi1998


Anmelden zum Antworten