Komisches Problem mit Redefinition.



  • Hi

    ich habe eine .h datei für eine Klasse geschrieben:

    class Verbindungen
    {
          private:
          double Gewichtung;
          int Ziel;
          double Ausgang;
          double Eingang;
          public:
          void set_Gewichtung(double);
          void set_Ziel(int);
          void set_Eingang(double);
          int get_Ziel();
          void berechnen();
    };
    

    Jetz mosert der compiler das die klasse mehrfach definiert wurde.
    mit:
    redefinition of `class Verbindungen'

    So, dann klick ich auf: "Prevuis Definition" und Lande bei der

    {
    

    im oben gezeigten code. Dann klick ich auf redefintion und lande wieder bei der

    {
    

    in der oben gezeigten headerdatei.

    Irgendwie lol 😃 Kann mir einer sagen wo da das problem liegt?

    MfG
    Eldarion



  • haste die datei mehrfach inkludiert? evtl über umweg duch andere headers? und haste keinen include guard benutzt (das dink mit #ifndef)?



  • Ok, es war eine dumme mehrfacheinbindung 😡

    Könnte mir einer nochma das mit ifndef erkläörn? ich check das nämlich nicht.

    Eldarion



  • ganz einfach:

    oben in die Headerdatei :

    #ifndef blabla_namemeinerheaderdatei
    #define blabla_namemeinerheaderdatei

    am ende der headerdatei:

    #endif



  • Eldarion schrieb:

    Ok, es war eine dumme mehrfacheinbindung 😡

    Könnte mir einer nochma das mit ifndef erkläörn? ich check das nämlich nicht.

    Eldarion

    Jo,

    ich schreib's aber nicht nochmal ab:
    "Präprozessor"

    😉

    Gruß,

    Simon2.



  • Hi

    danke, das hab ich jetz gecheckt.

    Hab jetz nen weiteres komisches prob:

    Folgendender code:

    Neuronen_array = new Neuronen[Neuronenanzahl];
           Verbindungen_array = new Verbindungen[Neuronenanzahl][Neuronenanzahl];
    

    So, beim ersten motzt er nich rum, aber beim zweiten, da kommt immer:
    `Neuronenanzahl' cannot appear in a constant-expression

    und wenn ich das Verbindungen_array nacher aufrufe, über variablen als indize, komm timmer das:
    `double[int]' for array subscript

    Was hat das zu bedeuten? ich brauch eure hilfe.

    Eldarion



  • Hallo,

    Lies dir mal diesen FAQ-Beitrag durch.
    Ansonsten gilt hier im Forum

    neue Frage - neuer Thread



  • Eldarion schrieb:

    So, beim ersten motzt er nich rum, aber beim zweiten, da kommt immer:
    `Neuronenanzahl' cannot appear in a constant-expression

    Das liegt daran, dass es keine mehrdimensionalen Arrays in C++ gibt, auch wenn es so aussieht.

    T foo[a][b]
    

    ist auch nur ein stinknormales eindimensionales Array, mit a Elementen vom Typ T[b].

    T foo[a][b][c]
    

    wäre demzufolge ein Array mit a Elementen vom Typ T[b][c]. Und das Problem dabei ist, der Typ muss ein compiletime Ausdruck sein. Das ist nun mal das Wesen von C++.

    Eldarion schrieb:

    und wenn ich das Verbindungen_array nacher aufrufe, über variablen als indize, komm timmer das:
    `double[int]' for array subscript

    Poste mal den konkreten Code.



  • Der konkrete code ist das hier:

    int Abgangsneuron;
           for (i = 0; i < Neuronen_aufbau_array[0]; i = i + 1)//verbindungen die vom EL ausgehen, eintragen
           {
               Abgangsneuron = i;
               for(k = 0; k<Neuronen_aufbau_array[1]; k = k + 1)
               {
                       Verbindungen_aufbau[Abgangsneuron][k+Neuronen_aufbau_array[0]] = S_Gewichtung;
               }
           }
    

    Das prob tritt in der schleife auf.

    MfG
    Eldarion

    P.S: Evtl sollten wir das in dem thread weitermadchen, wos um das mehrdimensionale array geht, da hab ich mein prob auch nochma genauer geschildert, evtl kann ein mod das ja verschieben. 🙂


Anmelden zum Antworten