Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Necromancer

Frischling

  • »Necromancer« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Schüller

  • Private Nachricht senden

1

01.03.2008, 12:53

[gelöst] Probleme mit Error 2065: base class undefinied

Hallo Zusammen,
ich habe im Augenblick ein großes Problem mit der Vererbung einer virtuellen Klasse. Hier erst mal die beiden relevanten Dateien:

GUI_Element.h

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef _GUIELEMENT_H
#define _GUIELEMENT_H

#include <string>
#include "GUI_Base.h"

class GUI_Base;

class GUI_Element
{
public:

    GUI_Element();
    ~GUI_Element();

    virtual void Add(GUI_Base* pGUI_Base, int height, int width, std::string Text, bool bFlag) = 0;
    virtual void Render() = 0;
};

#endif


GUI_ComboBox.h

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndef _GUICOMBOBOX_H
#define _GUICOMBOBOX_H

#include "GUI_Base.h"
#include "GUI_Element.h"
#include <string>
#include <list>


const int MAX_ITEMS = 8;

class GUI_Base;

class GUI_ComboBox:public GUI_Element
{
    struct SItem
    {
        std::string Text;
        bool        Flag;
    };

public:
    GUI_ComboBox();
    ~GUI_ComboBox();

...

Es wird immer die Fehlermeldung ausgegeben, das die Basisklasse nicht definiert wurde. Und dies obwohl sie includiert und fehlerfrei compiliert wurde. Weiß da jemand Rat ? Die Foren- und Google Suche hat mir bisher auch nicht viel weitergeholfen.

Viele Grüße Dirk
Ein Ring sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

01.03.2008, 12:59

Nimm mal die Vorwärtsdeklaration da raus (GUI_ComboBox.h). Mich wundert dass der nicht über ne Mehrfachdefinition meckert Oo

Necromancer

Frischling

  • »Necromancer« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Schüller

  • Private Nachricht senden

3

01.03.2008, 13:16

Ganz im Gegenteil. Der Compiler motzt wenn die Vorwärtsdeklaration nicht vorhanden ist ;). Der Compiler braucht die Deklaration um später einen Pointer auf die GUI_Base Klasse zu definieren. Ist aber auch nicht ersichtlich, da ich bei der GUI_ComboBox nur den Anfang aufgeführt habe.

Aber auch wenn ich die Deklaration herausnehme, bleibt der Fehler bestehen (neben den zusätlichen Meldungen wegen der fehlenden Vorwärtsdeklaration).

Daran liegt es leider nicht :cry: .

Viele Grüße Dirk
Ein Ring sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden

Necromancer

Frischling

  • »Necromancer« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Schüller

  • Private Nachricht senden

5

01.03.2008, 13:39

Biete sehr. Hier die Definitionen:

GUI_Base.h

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#ifndef _GUIBASE_H
#define _GUIBASE_H

#include "framework.h"
#include <string>
#include <list>
#include "GUI_Area.h"

class GUI_Element;
class GUI_ComboBox;

class GUI_Base
{

friend GUI_ComboBox;

public:

    GUI_Base();
    ~GUI_Base();

    GUI_Element* AddComboBox(dus::ivec2 Position, std::string SText);

    void DrawArea(dus::ivec2 Pos, dus::ivec2 Size, DWORD Color);

protected:

    dus::Surface*                       m_pIconPic;             // Surface für die Icon Grafiken
    dus::Font*                          m_pSystemFont;          // Definiert den Font für Systemmenüs
    dus::ivec2                          m_IconPos[ICON_NUM];    // Position der Icons auf der Surface


private:
    std::list<GUI_Element*>             m_Elements;             // Liste mit den erzeugten GUI Elementen
    
};

#endif


Und dazu auch gleich die GUI_Area.h

Quellcode

1
2
3
4
5
6
7
8
9
10
#ifndef _GUIAREA_H
#define _GUIAREA_H

#include "framework.h"
#include "GUI_Base.h"
#include "GUI_Element.h"
#include "GUI_ComboBox.h"


#endif


Ich nehme an, dass das Problem mit dem includieren der Dateien zu tun hat. Habe aber im Augenblick keinen Schimmer, was da schief gelaufen sein könnte.

Gruss Dirk
Ein Ring sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden

Necromancer

Frischling

  • »Necromancer« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Schüller

  • Private Nachricht senden

6

01.03.2008, 14:44

So habe das Problem endlich lösen können. Nachdem ich die Klasse GUI_Element nur noch als Header Datei definierte und die dazugehörige *cpp rausschmiss, hat es der Compiler einwandfrei geschluckt...
Auch wenn ich nicht verstehe, wo der Unterschied liegt. Komme jetzt aber endlich weiter.

Nochmal vielen Dank für die Hilfe

Viele Grüße Dirk
Ein Ring sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden

Werbeanzeige