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

Heiko Kalista

Treue Seele

Beiträge: 99

Wohnort: Hessen

  • Private Nachricht senden

11

08.09.2006, 18:06

Hi!

David Scherfgen schrieb:

Zitat


Leider nicht!
Schau dir das hier an:


Mit Gewalt bekommt man alles kaputt ;)

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

12

09.09.2006, 11:48

Zitat von »"Wabachota"«

[...]
Zeiger sind deswegen besser weil man weniger fehler machen kann.
einer funktion die eine referenz erwartet:
[...]

Das ist jawohl absolut vorlieben- und situationsabhängig. Du kannst nicht hingehen und sagen, dass das eine grundsätzlich besser ist als das andere. Zumal Du Dir selbst ins Knie geschossen hast, mit der Funktion, innerhalb der Du den Pointer inkrementierst, nicht seinen Wert. Aber das haben ja Chase und dot bereits geklärt.
Kommen Sie nie mit einem Schwert zu einer Schießerei.

13

09.09.2006, 12:37

jo, also bei der funktion hab ich mich verschrieben,
tut mir echt leid :?

odc

Frischling

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

14

11.09.2006, 14:57

Hallo community,

thanks für die vielen Kommentare und Hilfestellungen. Ich werde mich heute Abend nochmals mit dem Thema auseinandersetzen und wahrscheinlich wieder mit doofen Fragen nerven.
So ganz ist mir noch nicht klar, warum und weshalb Referenzen überhaupt verwendet werden sollten. Sicherlich wird der Code lesbarer, aber grundsätzlich gibt es doch heftig viele Fehlermöglichkeiten. Mehr jedenfalls, als wenn ich ganz streng mit Zeigern arbeite.

Das, oder ich habe gar nix verstanden... :(

15

11.09.2006, 15:07

Zitat von »"odc"«


So ganz ist mir noch nicht klar, warum und weshalb Referenzen überhaupt verwendet werden sollten.


http://www.research.att.com/~bs/bs_faq2.html#pointers-and-references

habs oben schon mal gepostet, aber s wurde ja gekonnt ignoriert...

odc

Frischling

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

16

11.09.2006, 16:39

Hallo WarMuuh!

Nein, ich habe Dich keinesfalls ignoriert - ich habe den Artikel bloß nicht wirklich verstanden... :? Strostroup schreibt ja eher für die Fortgeschrittenen; jedenfalls habe ich sein Buch nach den ersten 100 Seiten frustriert zur Seite gelegt mit dem Vermerk "Eher für später mal...".

Danke für den Link jedenfalls! :)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

17

11.09.2006, 21:48

der sinn von referenzen liegt ganz klar in der minimierung der fehlermöglichkeiten...

odc

Frischling

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

18

11.09.2006, 21:54

Hallo community,

ich glaube, ich habe verstanden... Ich arbeite gerade das 6. Kapitel nochmals durch und ackere mich an der Aufgabe an die Grenzen meines Verstandes.

... Mein Hauptproblem liegt wohl darin, dass durch die Struktur ein bisschen mehr zu schreiben und zu verstehen ist...

Vielen Dank an alle die mir geholfen haben! :)

Edit:
Okay, here we go. Ich versuche mich wie gesagt an Aufgabe 6.10 und erhalte mit folgendem Listing:

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
//C++ für Spieleprogrammierer

//Aufgabe6_10

//uiuiui

//

#include <iostream>

using namespace std;

//Struktur

//

struct Spieler
{
    int Energie;
    int Punkte;
    int Team;
};

//Prototypes

//

void BerechnePunkte (int *pPunkte); //Variable muss geändert werden -> Zeiger

void ZeigeSpieler (Spieler &Spieler1); //Großes Objekt/Instanz wird nicht geändert -> Referenz

void LadeLevel ();

//Hauptprogramm

//

int main()
{
    //Variablen bzw. Instanzen

    Spieler Spieler1;

    //Initialisierung

    Spieler1.Energie = 1000;
    Spieler1.Punkte  = 0;
    Spieler1.Team    = 1;
    
    LadeLevel();

    //Datenausgabe des Spielers VOR Funktionsaufrufen...

    cout << "Daten des Spielers..." << endl;
    cout << "---------------------" << endl;
    cout << "Energie: " << Spieler1.Energie << endl;
    cout << "Punkte:  " << Spieler1.Punkte << endl;
    cout << "Team:    " << Spieler1.Team << "\n\n";
    cout << "Es gibt 550 Bonuspunkte..." << endl;

    cout << "\n\n";
    
    //Funktionsaufrufe - hier werden nun die "neuen" Daten

    //in den Zeiger geschrieben.

    //Zeiger verwendet deshalb, weil der Wert verändert wird

    //Die Struktur deshalb, weil ein großes Objekt übergeben wird, das nicht

    //verändert wird!

    BerechnePunkte (&Spieler1.Punkte);
    
    //Funktionsaufruf um die Struktur abzubilden...

    ZeigeSpieler (Spieler1);

    //Datenausgabe des Spielers NACH Funktionsaufrufen...

    cout << "Daten des Spielers..." << endl;
    cout << "---------------------" << endl;
    cout << "Energie: " << Spieler1.Energie << endl;
    cout << "Punkte:  " << Spieler1.Punkte << endl;
    cout << "Team:    " << Spieler1.Team << "\n\n";
    cout << "Es gibt 550 Bonuspunkte..." << endl;

    cout << "\n\n";
    
    return 0;

}

void BerechnePunkte (int *pPunkte)
{
    *pPunkte += 550;
    cout << "Der Spieler hat nun: " << *pPunkte << " Punkte." << "\n\n";
}

void ZeigeSpieler (const Spieler &Spieler1)
{
    cout << "ZeigeSpieler aufgerufen" << endl;
}

void LadeLevel ()
{
    cout << "Level 1 geladen...!" << "\n\n";
}


folgende Fehlermeldung:

Zitat

Linker-Vorgang läuft...
Aufgabe6_10.obj : error LNK2001: Nichtaufgeloestes externes Symbol "void __cdecl ZeigeSpieler(struct Spieler &)" (?ZeigeSpieler@@YAXAAUSpieler@@@Z)
Debug/Aufgabe6_10.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

Aufgabe6_10.exe - 2 Fehler, 0 Warnung(en)


Ich komme mit dieser Fehlermeldung überhaupt nicht klar und finde sie auch nirgends in der Dokumentation. Kann mir (mal wieder) jemand helfen? Ich benutze Visual C++6.0 (Autorenversion)...

Thanks für jegliche Hilfe!

Sheddex

unregistriert

19

11.09.2006, 22:35

C-/C++-Quelltext

1
2
void ZeigeSpieler (Spieler &Spieler1);
void ZeigeSpieler (const Spieler &Spieler1)


Finde den Unterschied ;)

odc

Frischling

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

20

11.09.2006, 22:43

Hallo DarkHunter,

vielen, vielen Dank! Das kommt davon, wenn man schludrig ist... Thanks! :)

Werbeanzeige