Announcement

Collapse
No announcement yet.

Einen Array aus Klassen ohne default Konstruktor initialisieren ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Einen Array aus Klassen ohne default Konstruktor initialisieren ?

    Hallo zusammen !

    gibt es eine Möglichkeit den demo_array[10] im Konstruktor von ShowDemo , ohne dynamische Speicherreservierung und ohne default Konstruktor zu initialisieren ?

    Gruß Rober

    <pre>

    class Demo
    {
    public:
    Demo(int a){};

    };

    class ShowDemo
    {
    public:
    ShowDemo() // : ?????? - ?
    {};

    Demo demo_array[10];
    };

    </pre>

  • #2
    Hallo Rober,

    ich verstehe Dein Problem nicht? Aber Dein Source wird vermutlich nicht funktionieren, weil Du für die Klasse Demo keinen Default-Konstruktor deklariert hast, sondern nur einen überladenen. In der Klasse ShowDemo versuchst Du aber 10 Objekte der Klasse Demo zu erzeugen, ohne Parameter zu übergeben und ohne einen Default-Konstruktor zu haben ?!?

    Ändere mal Demo(int a) in Demo ()...

    Meines Erachtens ist es sowieso bestenfalls schlechter Stil Objekte direkt zu erzeugen. Du solltest Dir angewöhnen Objekte mit new zu Erzeugen und mit delete wieder freizugeben.

    Grüße Joche

    Comment


    • #3
      Hi Jochen,<br>
      <i>Meines Erachtens ist es sowieso bestenfalls schlechter Stil Objekte direkt zu erzeugen. Du solltest Dir angewöhnen Objekte mit new zu Erzeugen und mit delete wieder freizugeben.
      </i><br>
      Nicht unbedingt. Wenn ich eine Klasse wie z.B. <tt>class Point { int x, y; };</tt> habe, möchte ich die wie int's oder double's verwenden, also mit Wertsemantik und ohne andauende Speichereservierung und -freigabe.
      <p>Was anderes ist "richtige" OO mit Klassenhierarchie und Polymorphie und so. Dann ergibt sich der Gebrauch von new und delete aber auch meistens "von alleine".
      <p>Ciao, Uli

      Comment


      • #4
        Hallo Ulrich,

        das sehe ich ähnlich, allerdings anders herum. Erst mal lernen wie man mit Zeigern, new und delete umgeht. Das 'Schludern' mit den simplen Klassen kommt dann von ganz allein. ;-)

        Und obiges Beispiel, in dem in der einen Klasse Objekte der anderen Klasse erzeugt werden, würde ich definitiv mit new machen.

        Grüße Joche

        Comment


        • #5
          <i>'Schludern'</i><br>
          &lt;EntrüstetKuck&gt;Also bitte! :-)
          <p><i>Und obiges Beispiel, in dem in der einen Klasse Objekte der anderen Klasse erzeugt werden, würde ich definitiv mit new machen. </i><br>
          S.o.: Wenn die eingebetteten Objekte z.B. Punkte sind, dann doch lieber ohne Zeiger.
          (Allerdings i.A. mit vector<Point> statt Point[10])
          <p>Uli

          Comment

          Working...
          X