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
