• 26.08.2025, 13:07
  • Register
  • Login
  • You are not logged in.

 

Eumel

God

[C++] Vererbung - Problem bei Deklaration

Tuesday, December 30th 2003, 3:19pm

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.

Source code

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


Dann erstelle ich ja die neue Klasse wie folgt:

Source code

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.

Source code

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?

Source code

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

Tuesday, December 30th 2003, 3:44pm

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

Tuesday, December 30th 2003, 6:32pm

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

Tuesday, December 30th 2003, 6:42pm

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

Source code

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. ???

Source code

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

Tuesday, December 30th 2003, 7:01pm

*freu* Ein 3fach Post ;D

Habs hinbekommen:

Source code

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.