Array Initialisierung in Klasse (static + const)



  • Warum lässt sich folgendes nicht übersetzen, bzw. wie muss es richtig lauten?

    ...
      private:
        static const char forbiddenCahrs[] = {'\\', '/', '#'};
      ...
    

    Ich verstehe nicht, warum soetwas nicht möglich sein soll...

    gruss geralyn



  • Hallo

    du darfst die Initialisierung nicht bei der Klassen-Definition machen

    class Test
    {
      ...
          static const char forbiddenCahrs[];
      ...
      };
    ...
    
    // In der Implementation
    const char Test::forbiddenCahrs[] = {'\\', '/', '#'};
    

    bis bald
    akari



  • hmmm... das ist aber unschön.
    So ein Array ist nunmal static und es wäre schön ihn in die klassendefinition zu schreiben. So kann das initialisieren nicht vergessen werden.

    nun gut, dann werde ich das jetzt im Konstruktor machen und hoffen, dass niemand bevor das erste Objekt initialisiert wurde auf

    Test::forbiddenCahrs
    

    zugreift.



  • Hallo

    So kann das initialisieren nicht vergessen werden.

    Das initialisieren kann nicht vergessen werden, da der Compiler ansonsten wegen Unresolved external meckert.

    nun gut, dann werde ich das jetzt im Konstruktor machen

    Die Initialiserung soll auch nicht in den Konstruktor, sondern 'einfach so' in die Implementaion. Dann muß auch keine Instanz von test erstellt werden. Sondern forbiddenChars ist sofort verfügbar. Was auch der Sinn von static ist.

    bis bald
    akari



  • Gut, so ist's besser... 👍


Anmelden zum Antworten