Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Array im Konstruktor initialisieren

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.08.2004
    Beiträge
    139

    Array im Konstruktor initialisieren

    Hallo zusammen,

    ich möchte einfach nur ein array als Member einer Klasse anlegen und es entsprechend füllen. Aber nach unzähligen Versuchen weiss ich nun, dass es so oder so ähnlich nicht geht:
    Code:
    class Navigation{
            Navigation();
            char matrix[2][2];
    }
    
    Navigation::Navigation{
             matrix={{1, 3},{2 5}};
    }
    Wie muss die Initialisierung denn richtig aussehen?

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Ich glaube du kommst nicht darum herum, das Array in einer Schleife zu füllen. Jedenfalls weiss ich im Moment keinen Weg wie sich das vermeiden lässt. Vielleicht fällt ja jemand anderem was ein.

  3. #3
    Registrierter Benutzer
    Registriert seit
    16.08.2004
    Beiträge
    139
    Oje, da hoffe ich auch drauf, denn in das Array gehört eine "Karte" die eben in einer solchen Form {{n11, n12 ...},{n21, n22 ...},{}, ...} vorliegt und durchaus auch größer sein kann ...

    Ich könnte die Karte als globale Variable anlegen ... ist doch aber auch nicht schön.
    Geändert von Poseidonius (14-11-2006 um 20:23 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    16.06.2003
    Beiträge
    73
    Hi,

    wie wäre es das Array als static Member der Klasse zu deklarieren. Dann kannst du es direkt initialisieren.
    Benötigt jede Instanz allerdings eine eigene Version des Arrays (weil es verändert wird und die anderen Klassen davon nichts mitbekommen sollen), dann musst du im Konstruktor das static Member Array in eine neu angelegtes umkopieren (das geht dann mit ner Schleife).

    Gruß

    almoeli

  5. #5
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456
    Wie isses denn damit:
    Code:
    class Navigation{
            Navigation();
            char matrix[2][2];
    }
    
    Navigation::Navigation
    : matrix={{1, 3},{2 5}}
    {
    }
    Ich hab's jetzt nicht ausprobiert, aber müsste das nicht gehen?
    Geändert von 7.e.Q (16-11-2006 um 08:07 Uhr) Grund: Tippfehler... :p
    Anwendungsentwickler; ehem. Siemens, jetzt Nokia Siemens Networks GmbH. & CO KG
    C/C++;C#;VB;ASP.NET;Ajax;MSSQL
    Webentwicklung/Design; privat
    PHP;MySQL;HTML;XML;Typo3;Photoshop;ASP.NET;Ajax;MS SQL

  6. #6
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Soviel mir bekannt ist, ist die Zuweisung in der Art bei C:
    {{1, 3},{2 5}}
    nur beim anlegen der Variable erlaubt, aber bei C++ koennte das ja auch total anders sein.
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  7. #7
    Registrierter Benutzer
    Registriert seit
    02.07.2004
    Beiträge
    456
    "beim Anlegen der Variable" heißt ja Initialisierung. Und die nimmst du bei Membervariablen von Klassen auf diese Weise im Kopf des Constructors vor. Du kannst sie nämlich nicht in der Klassendeklaration initialisieren. Das wiederum lässt C++ nicht zu.
    Anwendungsentwickler; ehem. Siemens, jetzt Nokia Siemens Networks GmbH. & CO KG
    C/C++;C#;VB;ASP.NET;Ajax;MSSQL
    Webentwicklung/Design; privat
    PHP;MySQL;HTML;XML;Typo3;Photoshop;ASP.NET;Ajax;MS SQL

  8. #8
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Zitat Zitat von 7.e.Q Beitrag anzeigen
    Wie isses denn damit:
    Code:
    class Navigation{
            Navigation();
            char matrix[2][2];
    }
    
    Navigation::Navigation
    : matrix={{1, 3},{2 5}}
    {
    }
    Ich hab's jetzt nicht ausprobiert, aber müsste das nicht gehen?
    Sollte das nicht eher so sein? Habs auch net probiert.
    Code:
    class Navigation{
            Navigation();
            char matrix[2][2];
    }
    
    Navigation::Navigation()
    : matrix({{1, 3},{2 5}})
    {
    }
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  9. #9
    Registrierter Benutzer
    Registriert seit
    13.11.2006
    Beiträge
    16
    Da fehlt nen ","

    vielleicht isses das schon

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •