Konstrucktoren - Problem
-
Hi Leute
Ich fang erst mal an die Ausgangsposition zu beschreiben.
Ich hab 2 Klassen. Die eine Nennt sich TextBox und die Andere MyTextBox
Die 2. erbt von der 1.
Nun folgendes Problem
TextBox (die geerbte) hat einen Konstrucktor, dem man im ersten Parameter ein Struckt mitgeben muss
nun muss ja auch in MyTextBox dieser Konstruktor aufgerufen werden aber wie mache ich das, wenn man dem Konstr. von MyTextBox nur Variablen übergeben kann, die diesen Strukt ausmachen ....Hie am Bsp:
MyTextBox::MyTextBox(SIGNED iLeft, SIGNED iTop, SIGNED iRight, SIGNED iBottom, WORD wId, WORD wStyle, PEGCHAR *Text,WORD wMaxChars): TextBox(m_Rect,wId,wStyle,Text,wMaxChars)
m_Rect > ist also das struct, welches aus den 4 ersten Parametern bestehen soll.
Wie krieg ich die nun da rein ?!?!?
-
Sorry, kannst du etwas präziser werden?
-
Okay ....
2 Klassen:
1. Klasse: nur auszug aus der header:
class TextBox : public Window, public TextThing { public: TextBox(const stRect &Rect, WORD wId = 0, WORD wStyle = FF_RECESSED|EF_WRAP|TJ_LEFT, CHAR *Text = NULL, WORD wMaxChars = 1000); virtual ~TextBox(); ... .. .
2. Klasse:
class PLabel : public TextBox { public: PLabel( SIGNED iLeft, SIGNED iTop, SIGNED iRight, SIGNED iBottom, WORD wId, WORD wStyle, CHAR *Text,WORD wMaxChars); private: PegRect m_Rect; };
und das cpp zur 2. Klasse:
PLabel::PLabel(SIGNED iLeft, SIGNED iTop, SIGNED iRight, SIGNED iBottom, WORD wId, WORD wStyle, PEGCHAR *Text,WORD wMaxChars): TextBox(m_Rect,wId,wStyle,Text,wMaxChars) { }
hier seht ihr das der Konstruktor der ersten klasse aufgerufen wird.
Erster übergabeParameter ist mRect
von folgendem Typ:struct stRect { SIGNED wLeft; SIGNED wTop; SIGNED wRight; SIGNED wBottom; };
Ziel ist es also die
variablenSIGNED iLeft, SIGNED iTop, SIGNED iRight, SIGNED iBottom
vor den Aufruf des Konstruktors in die Variable m_rect zu bekommen
-
[ Dieser Beitrag wurde am 24.06.2003 um 16:14 Uhr von Psycho editiert. ]
-
Das ist 'ne doofe Sache. Stammt 'TextBox' von dir, bzw. hast du die Möglichkeit den struct zu verändern? Dann könntest du den dessen Konstruktor überladen, dass er die Koordinaten annimmt.
Ansonsten fällt mir jetzt nichts tolles ein, ausser dass die abgeleitete Klasse auch so einen struct nehmen würde.
-
Ach, da fällt mir ein, auch wenn du den struct nicht verändern kannst, kannst du dir ja eine Hilfs-Funktion machen:
Rect makeRect(int x,int y, int w,int h) { Rect rc={x,y,w,h}; return rc; } //Konstruktor MyTextBox::MyTextBox(...) : TextBox(makeRect(x,y,w,h)) { }
-
thx ... hat funktioniert ...
und krieg ich die Funktion noch irgendwie dazu, dass sie bestandteil der Klasse wird ???
wie muss ich die definieren ?
-
Wie jede andere Memberfunktion auch.