Objekt-Array initialisieren?



  • High!

    Ich habe folgendes Problem:
    Als erste Übung im objektorientierten Programmieren möchte ich ein Kommandozeilenprogramm ("bl", für "big letters") schreiben, das anhand eines als Parameter übergebenen Zeichens (z. B. #), gefolgt von einer Zeichenkette, ebendiese Zeichenkette als Blockgrafik auf der Konsole ausgibt.

    Beispiel:

    bl # Forum

    ergibt:

    ### ### # ### # # # ## ##
    # # # ## # # ## # #
    # # # # # # # # #
    # ### # ### # # #

    Von einer Klasse

    class letter
    {
    private:
    bool matrix[9][7]; // Matrix aus Bitwerten zur Darstellung der Zeichen
    short ewid; // effektive Breite des Zeichens, da Proportionalschrift
    public:
    void display(char c, char
    s)
    {
    // noch zu programmieren
    }
    }

    will ich ein Array-Objekt erstellen, das die 94 druckbaren Zeichen des 7bit-ASCII aufnimmt, also

    letter *ascii[94]

    Nur, wie initialisiere ich so etwas? Mein "Breymann" läßt mich da auch ziemlich im Unklaren...

    Etwa so:

    letter *ascii[94]=
    { // Zeichen 0: !
    {
    { 1, 0, 0, 0, 0, 0, 0 },
    { 1, 0, 0, 0, 0, 0, 0 },
    { 1, 0, 0, 0, 0, 0, 0 },
    { 1, 0, 0, 0, 0, 0, 0 },
    { 1, 0, 0, 0, 0, 0, 0 },
    { 1, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0 },
    { 1, 0, 0, 0, 0, 0, 0 }
    }, 1, // effektive Breite (ewid)
    // Zeichen 1: "
    {
    { 1, 0, 1, 0, 0, 0, 0, ... usw.

    ...
    }

    Oder bin ich da komplett auf dem Holzweg?

    Bis bald im Khyberspace!

    Yadgar



  • leider kann man objekte nicht genauso bequem initialisieren wie c-arrays. deshalb mußt du das im programm mit einer schleife machen.

    bool init_matrix[94][9][7] = { ... };
    
    for(int i=0; i<94; ++i)
      ascii[i]=new letter(init_matrix[i]);
    

    und einen konstruktor braucht deine klasse auch noch. etwa

    letter (bool (&matrix)[9][7]) { ... }
    

    außerdem solltest du matrix als bool und nicht als bool* deklarieren.

    EDIT: deinen code solltest du formatiert posten. per cut&paste einfügen, markieren und unten den "C/C++"-knopf drücken 😉


Anmelden zum Antworten