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

odc

Frischling

  • »odc« ist der Autor dieses Themas
  • Private Nachricht senden

1

30.10.2006, 21:09

Probleme mit Listing 9.8

Hallo community,

zuerst mal möchte ich mich entschuldigen, falls es das Thema schonmal gab, aber ich bin ein wenig verzweifelt: Selbst die Source von der Buch-CD haut mir einen Fehler und 18 Warnung(en) um die Ohren.

Da die Fehlerliste zu Amok ist, habe ich die HTML-Datei auf meinem Webspace gehostet. Vielen Dank für jegliche Hilfe.

Hier der Link: http://www.perlnerd.de/messages/error.html

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

2

30.10.2006, 21:11

Hallo,
Ich finde die Fehler wirklich heftig.
Werd mir den Code gleichmal ansehen ;)

EDIT
Entweder liegt der Fehler an der deklaration der Map oder du/irgendjemand hat was wichtiges in den includes geändert :(
Aufjeden fall macht er mir fremde Fehler und verweise auf STL Klassen
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

odc

Frischling

  • »odc« ist der Autor dieses Themas
  • Private Nachricht senden

3

30.10.2006, 21:20

Vielleicht würde es helfen, wenn ich die Source posten würde :)

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// C++ für Spieleprogrammierer

// Listing 9.8

// Maps mit der STL

//

#include <iostream>
#include <map>
#include <string>

using namespace std;

// Hauptprogramm

//

int main ()
{
    // Variablen

    //

    map<string, int> Punktetabelle; // Map

    map<string, int>::iterator i;   // Iterator für die Map

    pair<string, int> Spieler;      // Paar-Objekt für die Map


    // Anlegen von Spielerdaten (Map mit Daten füllen)

    //

    cout << "Spielerdaten werden angelegt\n\n";

    // Paare mit der Funktion "make_pair" erzeugen

    // und in die Map schieben

    Spieler = make_pair ("Tobi", 2500);
    Punktetabelle.insert (Spieler);

    Spieler = make_pair ("Peter", 43800);
    Punktetabelle.insert (Spieler);

    Spieler = make_pair ("Maria", 26500);
    Punktetabelle.insert (Spieler);

    Spieler = make_pair ("Nina", 22350);
    Punktetabelle.insert (Spieler);

    Spieler = make_pair ("Andi", 21080);
    Punktetabelle.insert (Spieler);

    // Paar "manuell" erzeugen und in die Map schieben

    Spieler.first  = "Marc";
    Spieler.second = 18400;
    Punktetabelle.insert (Spieler);

    // Suche nach Spieler "Peter"

    cout << "Suche nach Spieler \"Peter\"\n\n";

    i = Punktetabelle.find ("Peter");

    // Prüfen, ob ein entsprechender Eintrag gefunden wurde

    if (i != Punktetabelle.end() )
    {
        // Ja, dann Spielerdaten ausgeben

        cout << "Spieler \"Peter\" wurde gefunden." << endl;
        cout << "Er hat " << i->second << " Punkte erreicht";
        cout << "\n\n";
    }
    else
    {
        // Nein, dann Fehlermeldung ausgeben

        cout << "Spieler \"Peter\" wurde nicht gefunden";
        cout << endl;
    }

    // Anzahl der eingetragenen Spieler ausgeben sowie

    // deren Namen und erreichte Punkte

    cout << "Auflistung aller Spieler in der Tabelle:\n";
    cout << "(Insgesamt " << static_cast<int> (Punktetabelle.size () );
    cout << " Eintraege)" << "\n\n";

    for (i= Punktetabelle.begin(); i!= Punktetabelle.end(); ++i)
    {
        cout << "Spieler " << i->first << " hat ";
        cout << i->second << " Punkte erreicht";
        cout << "\n\n";
    }

    // Einen Eintrag direkt ansprechen, indem die Map wie ein

    // Array verwendet wird

    cout << "Eintrag direkt ausgeben: " << endl;
    cout << "Spieler \"Nina\" hat ";
    cout << Punktetabelle["Nina"];
    cout << " Punkte erreicht" << endl;

    return 0;
}


Edit: Im Grunde sind Maps eigentlich nichts anderes als assoziative Arrays, in Perl nennt man die "Hashes". Stimmt das in etwa?

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

4

30.10.2006, 21:34

Dein Code läuft bei mir und bringt weder Fehler noch Warnungen ;)

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

5

30.10.2006, 22:41

kann es daran liegen, dass du nur <iostream> schreibst statt <iostream.h>. Bei manchen älteren Kompilern kann das glaube ich zu Problemen führen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

30.10.2006, 22:47

Zitat von »"Fred"«

kann es daran liegen, dass du nur <iostream> schreibst statt <iostream.h>. Bei manchen älteren Kompilern kann das glaube ich zu Problemen führen.


In diesem Fall sollte man sich definitiv einen neuen Compiler zulegen. ;)
VS2003 kompiliert das übrigens korrekt, bei standard Projekteinstellungen.

grüße
@D13_Dreinig

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

7

31.10.2006, 12:12

Jopp liegt scheinbar am kompilierer.
Den du hast noch VC98(Steht im Log) und das ist doch recht veraltet.
Nimm VC++ 2005 oder eine andere IDE die etwas neuer ist ;)
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

babelfish

Alter Hase

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

8

31.10.2006, 13:00

Also bei VS6 Klappt das mit <iostream> schon.

odc

Frischling

  • »odc« ist der Autor dieses Themas
  • Private Nachricht senden

9

31.10.2006, 15:31

Hallo community,

erstmal vielen Dank für das wertvolle Feedback - ich verwende VC6, das mit der Buch-CD geliefert wurde. Allerdings: Es scheint, als habe VC6 mit praktisch allen map-Listings zu kämpfen, denn Listing 9.9 und ebenfalls das "Experiment", einen Eintrag doppelt in die map zu schieben, liefern das gleiche Ergebnis: kilometerlange Fehlerlisten.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

10

31.10.2006, 15:40

Also als ich seinerzeit die Autorenedition von VS6 verwendet habe hat das nicht geklappt. Probier es einfach mal aus

C-/C++-Quelltext

1
#include <iostream.h>

Werbeanzeige