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

Anonymous

unregistriert

1

26.02.2004, 17:07

Tree-Klasse (template-Klassen-Problem)

Hallo :) :)

Ich schreib' grad an 'ner Tree-Klasse, es ist 'ne Template-Klasse. Der Quellcode sieht bis jetzt so aus:

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
#ifndef _UNITSGTREE_
#define _UNITSGTREE_

#include "..//Include//UnitSGTreeElement.h"

template <typename TTyp> class sgCTree
{
    private:
        sgCTreeElement<TTyp>* m_pTreeElement;
    public:
        sgCTree(TTyp* p);
        ~sgCTree(void);

        sgCTreeElement<TTyp>* GetPTreeElement(void);
};


template <typename TTyp> sgCTree<TTyp>::sgCTree(TTyp* p)
{
    m_pTreeElement=new sgCTreeElement<TTyp>(p,NULL);
}

template <typename TTyp> sgCTree<TTyp>::~sgCTree(void)
{
    if(m_pTreeElement)
    {
        delete m_pTreeElement;
    }
}

template <typename TTyp> sgCTreeElement<TTyp>* sgCTree<TTyp>::GetPTreeElement(void)
{
    return m_pTreeElement;
}

#endif


es folgt der Code der Klasse sgCTreeElement:

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
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
#ifndef _UNITSGCTREEELEMENT_
#define _UNITSGCTREEELEMENT_

#include "..//Include//UnitSGList.h"

template <typename TTyp> class sgCTreeElement
{
    private:
        TTyp* m_p;
        sgCList<sgCTreeElement>* m_pListTreeElementLower;
        bool m_bAutoDelete;
    public:
        sgCTreeElement(
            TTyp* p,
            const sgCList<sgCTreeElement>* pListTreeElementLower,
            bool bAutoDelete=true
        );
        ~sgCTreeElement(void);

        void SetP(TTyp* p);

        TTyp* GetP(void);
        sgCList<sgCTreeElement<TTyp>>* GetPListTreeElementLower(void);
};

template <typename TTyp> sgCTreeElement<TTyp>::sgCTreeElement(
                                                      TTyp* p,
                                                      const sgCList<sgCTreeElement>* pListTreeElementLower,
                                                      bool bAutoDelete
                                                      )
                                                      :m_p(p),
                                                      m_pListTreeElementLower(pListTreeElementLower),
                                                      m_bAutoDelete(bAutoDelete)
{
}

template <typename TTyp> sgCTreeElement<TTyp>::~sgCTreeElement(void)
{
    if(m_p&&m_bAutoDelete)
    {
        delete m_p;
    }
    if(m_pListTreeElementLower)
    {
        delete m_pListTreeElementLower;
    }
}

template <typename TTyp> void sgCTreeElement<TTyp>::SetP(TTyp* p)
{
    m_p=p;
}

template <typename TTyp> TTyp* sgCTreeElement<TTyp>::GetP(void)
{
    return m_p;
}

template <typename TTyp> sgCList<sgCTreeElement<TTyp>>* sgCTreeElement<TTyp>::GetPListTreeElementLower(void)
{
    return m_pListTreeElementLower;
}

#endif


Folgendes Problem:

Der Kompiler spuckt folgende Fehlermeldungen aus :

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
--------------------Konfiguration: SGCommon - Win32 Debug--------------------
Kompilierung läuft...
UnitSGFileChunked.cpp
c:\dokumente und einstellungen\administrator\eigene dateien\samuel\c++\visual c++\dll's\sgcommon3\include\unitsgtreeelement.h(23) : error C2146: Syntaxfehler : Fehlendes ',' vor Bezeichner 'GetPListTreeElementLower'
        c:\dokumente und einstellungen\administrator\eigene dateien\samuel\c++\visual c++\dll's\sgcommon3\include\unitsgtreeelement.h(24) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'sgCTreeElement<TTyp>'
c:\dokumente und einstellungen\administrator\eigene dateien\samuel\c++\visual c++\dll's\sgcommon3\include\unitsgtreeelement.h(23) : error C2065: 'GetPListTreeElementLower' : nichtdeklarierter Bezeichner
        c:\dokumente und einstellungen\administrator\eigene dateien\samuel\c++\visual c++\dll's\sgcommon3\include\unitsgtreeelement.h(24) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'sgCTreeElement<TTyp>'
c:\dokumente und einstellungen\administrator\eigene dateien\samuel\c++\visual c++\dll's\sgcommon3\include\unitsgtreeelement.h(23) : error C2144: Syntaxfehler : Fehlendes ')' vor Typ 'void'
        c:\dokumente und einstellungen\administrator\eigene dateien\samuel\c++\visual c++\dll's\sgcommon3\include\unitsgtreeelement.h(24) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'sgCTreeElement<TTyp>'
c:\dokumente und einstellungen\administrator\eigene dateien\samuel\c++\visual c++\dll's\sgcommon3\include\unitsgtreeelement.h(24) : error C2143: Syntaxfehler : Fehlendes ';' vor '}'
        c:\dokumente und einstellungen\administrator\eigene dateien\samuel\c++\visual c++\dll's\sgcommon3\include\unitsgtreeelement.h(24) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'sgCTreeElement<TTyp>'
c:\dokumente und einstellungen\administrator\eigene dateien\samuel\c++\visual c++\dll's\sgcommon3\include\unitsgtreeelement.h(24) : fatal error C1001: INTERNER COMPILER- FEHLER
        (Compiler-Datei "YÃ", Zeile 1) 
         Bitte wählen Sie im Menü "?" von Visual C++ 
         den Befehl "Software Service", oder öffnen Sie die Hilfedatei für den Software Service, um weitere Informationen zu erhalten
        c:\dokumente und einstellungen\administrator\eigene dateien\samuel\c++\visual c++\dll's\sgcommon3\include\unitsgtreeelement.h(24) : Siehe Verweis auf Instantiierung der kompilierten Klassenvorlage 'sgCTreeElement<TTyp>'
Fehler beim Ausführen von cl.exe.

SGCommon.dll - 5 Fehler, 0 Warnung(en)


Ist das nicht pervers?? der Code ist doch logisch korrekt!!
:headscratch:

Kann mir da jemand auf die Sprünge helfen? Anscheinend stört den Kompiler der Rückgabewert "sgCList<sgCTreeElement<TTyp>>* ". Aber wieso??? ??? ??? ???

Ich flehe um Hilfe :crying: :crying: :crying:

Samuel G.

Jumping Jack

Treue Seele

Beiträge: 142

Wohnort: Hamburg

Beruf: Schüler

  • Private Nachricht senden

2

26.02.2004, 17:18

du musst hinten noch n leerzeichen zwischen >> einfügen, also:

sgCList<sgCTreeElement<TTyp> >

3

26.02.2004, 18:31

Der Compiler nimmt hier sonst fälschlicherweise an das du den Bit-Shit Operator verwenden willst.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Jumping Jack

Treue Seele

Beiträge: 142

Wohnort: Hamburg

Beruf: Schüler

  • Private Nachricht senden

4

26.02.2004, 21:27

Zitat


Bit-Shit Operator


;D

Anonymous

unregistriert

5

27.02.2004, 13:55

Thanks

Danke für die schnellen Antworten, jetzt ist mir alles klar!
:-D :-D :-D

Tschüss! :huhu:

Samuel G.

6

27.02.2004, 15:29

Oh ;D ;D meinte naürlich den Bit-Shift Operator :-D
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige