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

little_Progger

Treue Seele

  • »little_Progger« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

1

14.03.2010, 16:00

Fehler bei einbinden der Logfile

Ich wollte eig. nur mal die Logfile in ein kleines Programm einbauen um das mal zu festigen wie es funzt da ich die Logfile ja soo schnell nich wirklich brauchen werde das es bei kleinen Listings ja ziemlich unnütz ist.

Nun habe ich es mal versucht eine Logfile in das Listing 8.19 einzubauen (try und catch).

Nun kommen eine Reihe von Fehlern wenn ich versuche das Programm zu kompilieren:

Ausgabe:

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
 1>Kompilieren...
1>CLogfile.cpp
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\singleton.h(47): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "TSingleton<T>".
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\clogfile.h(32): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "TSingleton<T>".
1>        with
1>        [
1>            T=CLogfile
1>        ]
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\clogfile.cpp(188) : error C2039: 'FunctionResult': Ist kein Element von 'CLogfile'
1>c:\...\clogfile.h(31): Siehe Deklaration von 'CLogfile'
1>c:\...\clogfile.cpp(192) : error C3861: "Textout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(193) : error C3861: "Textout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(194) : error C3861: "fTextout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(195) : error C3861: "Textout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(196) : error C3861: "Textout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(197) : error C3861: "Textout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(201) : error C3861: "Textout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(202) : error C3861: "Textout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(203) : error C3861: "fTextout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(204) : error C3861: "Textout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(205) : error C3861: "Textout": Bezeichner wurde nicht gefunden.
1>c:\...\clogfile.cpp(206) : error C3861: "Textout": Bezeichner wurde nicht gefunden.
1>main.cpp
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\singleton.h(47): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "TSingleton<T>".
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>        c:\...\clogfile.h(32): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "TSingleton<T>".
1>        with
1>        [
1>            T=CLogfile
1>        ]
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>Code wird generiert...


Eigentlich sollte es ja funktionieren da ich das Programm schon auf Multi-byte eingestellt hab und es auch eig. richtig eingebunden habe.

main.cpp

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
// Kapitel 8

// Try and Catch

//

#include <iostream>
#include "CLogfile.h"

using namespace std;

int main()
{
    int a;
    int Version = 0;

    g_pLogfile->CreateLogfile ("Logfile.html");

    try
    {
        cout << "Welche Version? ";
        cin >> Version;

        g_pLogfile->fTextout(GREEN, "Version %i", Version);

        if(Version == 4)
        {
            cout << "Es gab keinerlei Probleme!" << endl;

            g_pLogfile->WriteTopic ("Aublauf: ", 2);
            g_pLogfile->Textout (GREEN, "Die Version konnte gelesen werden");
        }
        if(Version < 4)
        {
            g_pLogfile->WriteTopic ("Aublauf: ", 2);
            g_pLogfile->Textout (RED, "Die Version ist veraltet!");

            throw "Format veraltet, kann nicht ausgelesen werden";
        }
        if(Version > 4)
        {
            g_pLogfile->WriteTopic ("Aublauf: ", 2);
            g_pLogfile->Textout (RED, "Unbekanntes Format");

            throw "Unnbekanntes Format";
        }
    }

    catch (char *Fehlerstring)
    {
        g_pLogfile->Del();

        cout << "Ausnahme aufgetreten: " << Fehlerstring << endl;
        cout << "Speicher wird Freigegeben und das Programm wird";
        cout << " sauber herunter gefahren." << endl;
    }

    cin >> a; // Wartet auf abfrage und verhindert schließen


    g_pLogfile->Del();

    return 0;
}


Falls ihr die anderen Datein auch braucht sagt bescheid aber eigentlich sollten die funktionieren da sie ja schon in einem anderen programm gut funktioniert hatten.

Gruß

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

14.03.2010, 16:07

Lies mal die Fehlermeldungen genau und schau dort nach, wo es die Fehler kommen..

Zitat

1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.

Du hast irgendwo in dem Header Singleton.h ein Typ vergessen anzugeben. Wahrscheinlich bei einer Funktion.
Dann scheinen da gewisse Bezeichner ebenfalls zu fehlen..

Zitat

1>c:\...\clogfile.cpp(192) : error C3861: "Textout": Bezeichner wurde nicht gefunden.

Da fehlt wohl eine Funktion.

3

14.03.2010, 16:56

Wahrscheinlich die Funktion Textout in der Klasse deklariert aber in der cpp nicht definiert, oder Scope ( :: ) vergessen etc.

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

4

14.03.2010, 17:32

Zitat von »"HighligerBimBam"«

Wahrscheinlich die Funktion Textout in der Klasse deklariert aber in der cpp nicht definiert, oder Scope ( :: ) vergessen etc.



Glaub ich nicht... eine Nichtdefinition (hehe neologismus) führt eher zu einem Linkerfehler...

Ich tipp darauf, dass das was mit nem Typen zu tun hat ;), der nicht bekannt ist... oder falsch geschrieben oder so...
Woraufhin dann "Textout" nicht bekannt ist (denke weil FunctionResult nicht declariert ist)

little_Progger

Treue Seele

  • »little_Progger« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

5

14.03.2010, 18:09

ok erstes problem gelöst! ich hatte in der logfile.h -> void FunktionResult .....
und in der logfile.cpp -> void CLogfile::FunctionResult
geschrieben ... naja gut kann ja mal passieren ^^

aber es bleiben trotzdem noch probleme die ich meine schonmal gehabt zu haben als ich auf unicode stehen hatte aber ich habs ja schon auf multi-byte gestellt also wäre das ja schonmal ausgeschlossen...

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
1>Kompilieren...
1>CLogfile.cpp
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\singleton.h(47): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "TSingleton<T>".
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\clogfile.h(32): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "TSingleton<T>".
1>        with
1>        [
1>            T=CLogfile
1>        ]
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>main.cpp
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\singleton.h(47): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "TSingleton<T>".
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\clogfile.h(32): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "TSingleton<T>".
1>        with
1>        [
1>            T=CLogfile
1>        ]
1>c:\...\singleton.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>Code wird generiert...


Hier die singleton.h die eig. genau wie im buch ist bis auf eine von mir geschriebene zeile.

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
// Singleton.h

//

#ifndef TSINGLETON
#define TSINGLETON

#define SAFE_DELETE(X) {if(X==NULL) {delete (X); X=NULL;}}

template <class T>
class TSingleton
{
protected:

    static *m_pSingleton;   // Statisches Objekt


public:

    // Destruktor

    //

    virtual ~TSingleton()
    {
    }
    
    // Get

    //

    // Aufgabe: Wenn nötig, statisches Objekt erzeugen und

    // Zeiger darauf zurückgeben

    //

    inline static T* Get()
    {
        // Existiert schon eine Instanz?

        if(!m_pSingleton)
            m_pSingleton = new T;   // Nein, dann neue Instanz erzeugen


        return m_pSingleton;
    } // Get


    // Statisches Objekt freigeben

    //

    static void Del()
    {
        // Gab es eine Instanz?

        if(m_pSingleton)
        {
            SAFE_DELETE(m_pSingleton);
        }
    } // Del

};

// Statische Variable erzeugen

//

template <class T>
T* TSingleton<T>::m_pSingleton = 0;

#endif

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

6

14.03.2010, 18:29

Doppelklick auf die erste Fehlermeldung. Und dann schau dir diese Zeile ganz genau an.. Da fehlt etwas (under der Compiler sagt dir sogar was).

7

14.03.2010, 18:31

Ich glaube ein Prolem ist das du vergisst von welchem Typ m_pSingleton ist.

Richtig wäre:

C-/C++-Quelltext

1
  static T *m_pSingleton;    // Statisches Objekt 


mehr fällt mir im Moment nicht auf.

EDIT1: Sorry Drakon, dein Post war bei der Erstellung meiner Antwort noch nicht da! Ich hoffe es ist nicht zu schlimm, wenn ich die Antwort rausposaunt habe...

Aber generell kann ich mich Drakon nur anschließen! Es lohnt sich auf die Meldungen (vor allem auf die erste) doppelzuklicken! (Die unteren Fehler entstehen möglicherweise durch den obersten Fehler, deshalb immer von oben anfagen!)
Errare humanum est.. leider oder zum Glück?

little_Progger

Treue Seele

  • »little_Progger« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

8

14.03.2010, 18:54

ups :D

ich hatte das schonmal weil ich die datei so ausm buch abgeschrieben hatte und sie dann extern gespeichert hatte damit ich sie schnell und einfach in jedes projekt implementieren kann sofern ich es benötige und da war der fehler mit bei :D

Danke leute !

Werbeanzeige