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

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

1

06.01.2008, 18:19

Basisklasse undefiniert

hallo..

ich versteh nicht ganz wie dieser fehler zustande kommt..

alle headerdateien befinden sich in der stdafx.h..

C-/C++-Quelltext

1
2
3
4
5
#include "stdafx.h"
class CriticalSections : public List
{
    // ...

}


die stdafx.h sieht so aus:

C-/C++-Quelltext

1
2
3
4
// ...

#include "CList.hpp"
#include "CCriticalSection.hpp"
// ...


und trotzdem meckert der compiler...


Zitat


Fehler 1 error C2504: 'List': Basisklasse undefiniert
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

2

06.01.2008, 18:48

Was steht denn in CList.hpp (ungewöhnliche Art klar zu machen das in einem Header eine Klasse ist, aber okay ;) )
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

XP^

Treue Seele

  • Private Nachricht senden

3

06.01.2008, 18:49

Du hast wahrscheinlich die Headerdatei mit der Klasse List vergessen mit zu inkludieren.

Edit: na weiß net, zeig vielleicht den Inhalt der Dateien..

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

4

06.01.2008, 18:54

Zitat von »"Deviloper"«


ungewöhnliche Art klar zu machen das in einem Header eine Klasse ist, aber okay ;)


@ Deviloper:
wie meinst du das? was mach ich denn so ungewöhnlich? O_o

@ XP:

hab 5 mal kontrolliert... die headerdatei der klasse List (CList.hpp) ist angegeben in der .cpp datei (CList.cpp). außerdem ist die CList.hpp in stdafx.h inkludiert, die in allen anderen dateien auch inkludiert ist..


CList.hpp

C-/C++-Quelltext

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// -------------------------------------------------------------------

// File:    CList.hpp

// Desc:    Deklaration for list class.

// Defs:    CList.hpp

// -------------------------------------------------------------------

#if !defined _CLIST_HPP_
#define _CLIST_HPP_





// ------------------------------------

// i n c l u d e s

// ------------------------------------

#include "stdafx.h"





// ------------------------------------

// s t r u c t s 

// ------------------------------------

struct Element
{
    unsigned long   ID;
    void*           pData;
    Element*        pPrevElement;
    Element*        pNextElement;
    
    Element()
    {
        ID              = -1;
        pData           = NULL;
        pPrevElement    = NULL;
        pNextElement    = NULL; 
    } // Constructor()

}; // struct Element






// ------------------------------------

// c l a s s 

// ------------------------------------

class List
{
protected:

    // ------------------------------------

    // m e m b e r _ v a r i a b l e s

    // ------------------------------------

    Element*        m_pElement;

public:

    // ------------------------------------

    // m e m b e r _ f u n c t i o n s

    // ------------------------------------

            List        ();
            ~List       ();

    void    AddElement  (void* Element);
    void    SortList    ();
    void    ShowList    ();
}; // class List






#endif
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

XP^

Treue Seele

  • Private Nachricht senden

5

06.01.2008, 19:05

http://www.softgames.de/forum/frage104984.html .. sollte helfen, ansonsten versuch mal die Dateien woanders zu inkludieren, klingt komisch, hab ich selber mal gemacht und es ging. In der stdafx hat er mir immer gemeldet,dass etwas doppelt vorkommt usw..

Kann dir da leider aber nicht besser helfen, sorry.

Edit:

vielleicht ist das so hier zbsp.:

C-/C++-Quelltext

1
2
3
4
5
class some;
class any : public some
{   
// Inhalt 

};


aber kann auch ein Include Fehler sein, wer weiß :)

6

06.01.2008, 19:09

Nunja, Microsoft kam beim Entwickeln der MFC usw. auf die Idee, für Klassen den Prefix C zu nutzen. In Zeiten, wo die IntelliSens noch nicht sonderlich fortschrittlich war, sicherlich sinnvoll. Wobei man sich auch einfach an die Ungarische Notation hätte halten können und glücklich gewesen wäre.
Naja von Zeit zu zeit entwickelt jeder Programmierer seinen eigenen Stil und iwann wirst du (wahrscheinlich) von dem Prefix C wegkommen.
Nunja aber das Prefix nutzte man eigtl. nicht bei der Benennung der Dateien, sondern bei der Benennung der Klassen un Variablen. Und nur dort. Bei Include-Guard und Dateinamen tritt das Prefix nicht mehr auf, da in dem Header ja nicht unbedingt nur die Klasse drin sein muss.
Außerdem finde cih die Unterscheidung von Klasse (C) und Struktur(S) ein wenig unsinnig, da nur der Standardzugriff auf die Klasse anders ist. Nunja die MFC ist nunmal ein wenig veraltet(Makro-Power!! :D und nicht unbedingt ein Beispiel für schönes objektorientiertes Programmieren.

Ich weiß nicht warum David es in seinen Quelltexten übernommen hat ... aber jedem das seine.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

7

06.01.2008, 19:13

ich mach auch nen C vor die klassen und nen S vor die structs.

Allerdings verwende ich strukturen nur, wenn ich irgendwelche daten zusammenhaben will, und keine methoden brauche.
Der rest wird zur klasse.

Socke

8

06.01.2008, 19:14

Hups war zu lahm ...

Also dem Compiler sind alle Namensgebungen mit _ beginnend, nach Standard, vorreserviert. Weiß nicht warum man das so oft auffindet.

Mit void-Zeigern rum zu arbeiten ... naja nicht die feine englische Art ;)

Guck dir mal Initialisierungslisten an ...
Sicher das ShowList nicht const sein könnte?

Im Destruktor sollte man eine Liste wieder freigeben ;)

Lass mal clist.hpp nur von stdafx.h einbinden. Und binde nicht in clist.hpp stdafx.h ein.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

9

06.01.2008, 19:20

Zitat von »"Deviloper"«


Lass mal clist.hpp nur von stdafx.h einbinden. Und binde nicht in clist.hpp stdafx.h ein.


brauch ich nicht, ist schon so ^^

wegen dem destruktor:

die klasse hat noch absolut keine funktion.. die .cpp sieht so aus

C-/C++-Quelltext

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// -------------------------------------------------------------------

// File:    CList.cpp

// Desc:    Definitions for list class.

// Defs:    CList.cpp

// -------------------------------------------------------------------

#include "CList.hpp"





// -------------------------------------------------------------------

// Name:    CList()

// Desc:    Contructor.

// -------------------------------------------------------------------

List::List()
: m_pElement(NULL)
{
} // Constructor()






// -------------------------------------------------------------------

// Name:    ~CList()

// Desc:    Destructor.

// -------------------------------------------------------------------

List::~List()
{
} // Destructor()






// -------------------------------------------------------------------

// Name:    AddElement()

// Desc:    Adds an element to the list.

// -------------------------------------------------------------------

void List::AddElement (void* Data)
{
} // AddElement()






// -------------------------------------------------------------------

// Name:    SortList()

// Desc:    Sorts the list.

// -------------------------------------------------------------------

void List::SortList ()
{
} // SortList()






// -------------------------------------------------------------------

// Name:    ShowList()

// Desc:    Shows the list

// -------------------------------------------------------------------

void List::ShowList ()
{
} // ShowList()



das ding kann noch gar nix ^^

wie meinst du das, dass ShowList() const sein könnte?


ja das mit dem void* zeiger ist auch nur professorisch..
ich suche ne möglichkeit wie der datentyp der von der liste getragen wird variabel bleibt..

es soll egal sein ob die liste nur integer speichert, oder structs oder klassen.

das mit den präfixen:
jo kA.. das hab ich mir angewöhnt damit ich weiss in welcher datei ne klasse steht und in welcher nicht..


edit:

oh du meintest den destruktor des structs..

stimmt, du hast recht ^^
das ging verloren wegen dem error da.. ^^
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Werbeanzeige