• 25.08.2025, 19:05
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Eumel

God

[C++] Vererbung - Problem bei Deklaration

Dienstag, 30. Dezember 2003, 15:19

Ich habe eine Klasse CEditBox. Nun arbeite ich an einer weiteren CExplorerBox welche u.a. die gleichen Eigenschaften wie die erste Klasse haben soll. Ich hab auch alle privaten Eigenschaften von CEditBox mit dem Schlüsselwort "protected" versehen.

Quellcode

1
2
3
4
5
6
7
class CEditBox
{
protected:
   ...
public:
   ...
};


Dann erstelle ich ja die neue Klasse wie folgt:

Quellcode

1
2
3
4
5
6
7
class CExplorerBox : public CEditBox
{
private:
   ...
public:
   ...
};


Nun ist das Problem aber, das CEditBox einen umfangreichen Konstruktor hat, CExplorerBox aber auch einen Wert zusätzlich übernehmen soll.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Konstruktor von CEditBox
CEditBox(int x, int y, int w, int h, FONT * fnt): drawRect(false), centered(false), lineVal(0)
      {
            if (!(w > SCREEN_X || h > SCREEN_Y))
            {
                  itsWidth = w; itsHeight = h;
                  itsX = x; itsY = y;
            }
            itsFnt = fnt;
            surface = create_bitmap(SCREEN_X, SCREEN_Y);
            surfaceCpy = create_bitmap(SCREEN_X, SCREEN_Y);
      };

// Konstruktor von CExplorerBox
CExplorerBox (int job)
      {
            if (job > 2 &#124;&#124; job < 0) 
            {
                  //printf(fError, "FEHLER: CExplorerBox-Objekt soll ungültige Arbeit übernehmen! -> %i\n", job);
                  itsFunction = FILE_BROWSER;
            }
            else itsFunction = job;
      };


Ich weiß, dass beim Erstellen eines CExplorerBox-Objektes erst der Konstruktor von CEditBox und dann der von CExplorerBox aufgerufen wird.

Nur wie deklariere ich nun das CExplorerBox-Objekt?

Quellcode

1
CExplorerBox test( ? ? ? ? ? ? ? ? ?);


Helft mir!
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

PAB

God

Re: [C++] Vererbung -&amp;amp;gt; Problem bei Dekl

Dienstag, 30. Dezember 2003, 15:44

Der Konstruktor von CExplorerBox soll alle Parameter des Konstruktors von CEditBox + eines zusätzlichen Parameters annehmen können?

:tidE
Schau dir mal diese Seite an:

http://www.tutorialpage.de/Cpp2/index.ph…/Cpp2/chap4.php

Eumel

God

Re: [C++] Vererbung -&amp;gt; Problem bei Dekl

Dienstag, 30. Dezember 2003, 18:32

Ich guck mir die Page ma an, thx. Erstmal probiere ich, bei CEditBox einen zusätzlichen Standardkonstruktor zu schreiben, der keine Parameter übernimmt. Dann schreib ich den Konstruktor der CExplorerBox eben so, dass er ALLE Parameter übernimmt.

Dürfte dann auch keinen Compiler-Fehler geben. Hmmmmmmm...


Edit: THX! Die Lösung auf der Page gefällt mir viiiel besser. ;)

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

Eumel

God

Re: [C++] Vererbung -&amp;gt; Problem bei Dekl

Dienstag, 30. Dezember 2003, 18:42

Hmmm... Der neue Konstruktor schaut nun so aus:

Quellcode

1
2
3
4
5
6
7
8
9
CExplorerBox::CExplorerBox(int job) : CEditBox(x, y, w, h, fnt)
{
      if (job > 2 &#124;&#124; job < 0) 
      {
            //printf(fError, "FEHLER: CExplorerBox-Objekt soll ungültige Arbeit übernehmen! -> %i\n", job);
            itsFunction = FILE_BROWSER;
      }
      else itsFunction = job;
}


Ist jetzt nicht mehr "Inline" sondern schön extra :D

Aber es kommt jetzt ein Fehler, dass die übergebenen CEditBox-Werte nicht deklariert sind. ???

Quellcode

1
2
3
4
5
6
7
8
9
10
11
--------------------Konfiguration: sddz2 - Win32 Debug--------------------
Kompilierung läuft...
explorerbox.cpp
C:\VCP621\FindTheFlag\sddz2\explorerbox.cpp(3) : error C2065: 'x' : nichtdeklarierter Bezeichner
C:\VCP621\FindTheFlag\sddz2\explorerbox.cpp(3) : error C2065: 'y' : nichtdeklarierter Bezeichner
C:\VCP621\FindTheFlag\sddz2\explorerbox.cpp(3) : error C2065: 'w' : nichtdeklarierter Bezeichner
C:\VCP621\FindTheFlag\sddz2\explorerbox.cpp(3) : error C2065: 'h' : nichtdeklarierter Bezeichner
C:\VCP621\FindTheFlag\sddz2\explorerbox.cpp(3) : error C2065: 'fnt' : nichtdeklarierter Bezeichner
Fehler beim Ausführen von cl.exe.

explorerbox.obj - 5 Fehler, 0 Warnung(en)


MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

Eumel

God

Re: [C++] Vererbung -&amp;gt; Problem bei Dekl

Dienstag, 30. Dezember 2003, 19:01

*freu* Ein 3fach Post ;D

Habs hinbekommen:

Quellcode

1
2
3
4
5
6
7
8
9
CExplorerBox::CExplorerBox(int x, int y, int w, int h, FONT * fnt, int job) : CEditBox(x, y, w, h, fnt)
{
      if (job > 2 &#124;&#124; job < 0) 
      {
            fprintf(fError, "FEHLER: CExplorerBox-Objekt soll ungültige Arbeit übernehmen! -> %i\n", job);
            itsFunction = FILE_BROWSER;
      }
      else itsFunction = job;
}


Man sollte sich eben das Beispiel auf der Page GENAU angucken ^^

THX nochma.

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.