Arrayinitialisierung in kontruktor



  • Hallo leute,

    mir is langweilig, und ich will nen kleines morseübersetzungsdingens programmieren!

    Hab alle buchstaben in einen string gespeichert, und die morsezeichen in einem stringarray!

    .H

    #ifndef MorseCoreH
    #define MorseCoreH
    #include <string>
    using namespace std;
    
    class WordToMorse
    {
     public:
      WordToMorse();
    
      string GetMorseCode(const string& text);
    
     private:
      void TranslateToMorseCode();
      string m_text;
      string m_morse;
      string m_morsetable1;
      string m_morsetable2[34];
    };
    //---------------------------------------------------------------------------
    

    .cpp

    #include "MorseCore.h"
    
    WordToMorse::WordToMorse()
    {
     m_text = "";
     m_morse = "";
    
     m_morsetable1="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
     m_morsetable2[0]=".-";
     m_morsetable2[1]="-...";
     m_morsetable2[2]="-.-.";
     m_morsetable2[3]="-..";
     m_morsetable2[4]=".";
     m_morsetable2[5]="..-.";
     m_morsetable2[6]="--.";
     m_morsetable2[7]="....";
     m_morsetable2[8]="..";
     m_morsetable2[9]=".---";
     m_morsetable2[10]="-.-";
     m_morsetable2[11]=".-..";
     m_morsetable2[12]="-.";
     m_morsetable2[13]="---";
     m_morsetable2[14]=".--.";
     m_morsetable2[15]="--.-";
     m_morsetable2[16]=".-.";
     m_morsetable2[17]="...";
     m_morsetable2[18]="..-";
     m_morsetable2[19]="...-";
     m_morsetable2[20]=".--";
     m_morsetable2[21]="-..-";
     m_morsetable2[22]="-.--";
     m_morsetable2[23]="--..";
     m_morsetable2[24]="-----";
     m_morsetable2[25]=".----";
     m_morsetable2[26]="..---";
     m_morsetable2[27]="...--";
     m_morsetable2[28]="....-";
     m_morsetable2[29]=".....";
     m_morsetable2[30]="-....";
     m_morsetable2[31]="--...";
     m_morsetable2[32]="---..";
     m_morsetable2[33]="----.";
    }
    //---------------------------------------------------------------------------
    

    wie ihr seht, is das initialisieren des arrays unschön (viel aufwand)

    ich dachte eher an sowas:

    m_morsetable2 = {"---","..--"};
    

    aber da bekomm ich immer einen Syntaxerror!

    Frage: kann ich so überhaupt das array im konstruktor initialisieren, und wenn nicht, gibt es viell eine ganz andere möglichkeit das zu lösen (viell ohne stringarrys oder so)??



  • Diese Initialisierung geht nur direkt bei der Definition deiner Variablen. Aber da die Klasse nur eine Morsetabelle braucht, solltest du die sowieso static setzen:

    class WordToMorse
    {
      ...
    private:
      static string s_table1;
      static string s_table2[36];//26 Buchstaben + 10 Ziffern
    }
    
    //die beiden Definitionen gehören in die "Morse.cpp":
    string WordToMorse::s_table1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    string WordToMorse::s_table2[36] = {".-","-...","-.-.",...};
    

Log in to reply