Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » objekte im heapspeicher

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
08.07.2004, 14:49 Uhr
~alex
Gast


Guten Tag alle zusammen!


Ich habe folgendes Problem:

es geht um die Klasse Linie:

Line.h:

C++:
class Linie  
{
public:
    
    Linie(int a,int b,int c,int d);
    virtual ~Linie();
    void zeichnen (HDC hdc);
    

private:
        
    int xanfang;
    int xende;
    int yanfang;
    int yende;
    
};


Line .cpp:

C++:
Linie::Linie(int a,int b,int c,int d)
      : xanfang(a),xende(b),yanfang(c),yende(d)
        
{    
    lz ++;
}




ich will ein array von pointern auf ein Objekt anlegen :

Linie* neuelinie = new Linie[300];

das erste neue Objekt soll jedoch ueber einen initialisierungskonstruktor mit werten fuer anfangs und endpunkt belegt werden.

normalerweise wuerde ich also schreiben:

Linie neuielinie (10,5,1,33);



Da es sich jedoch um pointer handelt weiss ich nicht wie ich dies programmieren soll.


Fuer jede Hilfe wäre ich dankbar.


Bearbeitung von Pablo:

Benutze die CPP Tags selber, bitte


Dieser Post wurde am 08.07.2004 um 15:07 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.07.2004, 14:53 Uhr
(un)wissender
Niveauwart


Kurze Antwort: geht nicht.
Es wird nur der Defaultkonstuktor aufgerufen, der bei dir nicht vorhanden ist.
Es gibt eine dreckige Lösung mit Speicherholen und Placement new, aber ich denke, dass willst du nicht wirklich tun.
Also erst Defaultkonstuktor einführen, allokieren und dann Werte von Hand setzen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.07.2004, 14:54 Uhr
freshman



bitte code-tags verwenden!
Implementiere dir einen Zuweisungsoperator operator= oder die entsprechenden setter-Methoden für die Attribute.
Frage am Rande: was soll lz++; im Konstruktor?
--
freshman.say("Wer nicht an Wunder glaubt ist kein Realist!\a");
while(1)freshman.ask(sillyQuestion);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.07.2004, 14:59 Uhr
~alex
Gast


das werde ich dann wohl tun muessen. Danke. hab noch eine frage:
gibt es eien Möglichkeit, das ich die anzahl der im array gespeicherten pointer nict vorher festlegen muss, sondern sie mit jedem new hochzählen kann?


lz is ne static variable die zählt wieviel objekte ich schon erstellt habe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.07.2004, 15:07 Uhr
(un)wissender
Niveauwart


Nein, musste größeren Speicherbereich anfordern, den alten hineinkopieren,
dann löschen + Pointer zuweisen.
Oder gleich std::vector verwenden.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.07.2004, 15:09 Uhr
~alex
Gast


ok, dankeschön
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.07.2004, 15:12 Uhr
freshman



@alex: habe deren Deklaration/Definition nicht gesehen bzw sehe sie noch immer nicht
(un)wissender.isRight(true);
--
freshman.say("Wer nicht an Wunder glaubt ist kein Realist!\a");
while(1)freshman.ask(sillyQuestion);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.07.2004, 15:21 Uhr
(un)wissender
Niveauwart


Danke, aber mir gebührt die Ehre nicht.
Da kannst lieber virtual, beefy, Flo oder so nehmen, die sind um Längen besser.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
08.07.2004, 15:26 Uhr
freshman



@(un)wissender: das von meiner Seite war keine Ehre, sondern nur eine empirische Feststellung, daß du mit der Idee des Verwendens eines std::vectors Recht hast. Eben nur ein boolscher Wert, der !=0 ist
--
freshman.say("Wer nicht an Wunder glaubt ist kein Realist!\a");
while(1)freshman.ask(sillyQuestion);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
08.07.2004, 15:28 Uhr
(un)wissender
Niveauwart



--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: