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

Teiby

Frischling

  • »Teiby« ist der Autor dieses Themas

Beiträge: 42

Beruf: Ausbildung

  • Private Nachricht senden

1

23.11.2010, 18:24

Schlüsselwort "extern" Rechnungsproblem

Guten Tag. Ich hab vor 4 Tagen das Buch C++ für Spieleprogrammierer gekauft und bin nun fleißig am lesen.

Nun stoße ich aber auf ein Problem wenn ich mir für Kapitel 4.12 eine Rechnung erstellen soll in der Datei Charakter.cpp mit der Verwendung der Variable "Testvariable"

Also ich hab

C-/C++-Quelltext

1
int Textvariable = 1234;


in die Listing_4_10.cpp gemacht und gespeichert. Dann hab ich in charakter.cpp eine Rechung erstellen wollen mit Testvariable += 10;

Das sieht dann so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "charakter.hpp"

Testvariable += 10;

int addProzent (int Wert, int Prozent)
{
    int neuerWert;
    neuerWert = Wert + (Wert*Prozent)/100;
    return neuerWert;
}

float addProzent (float Wert, int Prozent)
{
    float neuerWert;
    neuerWert = Wert + (Wert*Prozent)/100;
    return neuerWert;
}


Wenn ich nun erstelle kommt die Meldung

Zitat


Fehler 1 error C2143: Syntaxfehler: Es fehlt ';' vor '+=' c:\users\xxx\documents\visual studio 2008\projects\headerundso\charakter.cpp 5

statt der erhoften Fehlermeldung:

Zitat

charakter.cpp(7) : error C2065: 'Testvariable': nichtdeklarierter Bezeichner
so wie es im Buch steht.

Eine Abhilfe mit

C-/C++-Quelltext

1
extern int Testvariable;

hilft dabei nicht weiter und es gibt die genau gleiche Fehlermeldung.

Ich habe daher eine Funktion drauß gemacht und so funktioniert es. aber auch ohne extern anzugeben. Daher ist ja meine Lösung falsch.

Hoffe jemand kann mir Erklären was ich falsch mache :<

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

23.11.2010, 18:50

Deine Rechnung steht in keiner Funktion drin, wie soll das denn funktionieren? ;)

Phalax

Frischling

Beiträge: 82

Beruf: Student Media Systems

  • Private Nachricht senden

3

23.11.2010, 18:51

Du kannst doch die Variable nicht einfach außerhalb einer Funktion zum Rechnen nutzen. Du musst sie in eine der Funktionen einsetzen z.B. addProzent und dort mit ihr rechnen.

[Edit] zu spät ;)

Teiby

Frischling

  • »Teiby« ist der Autor dieses Themas

Beiträge: 42

Beruf: Ausbildung

  • Private Nachricht senden

4

23.11.2010, 19:07

Okay danke. Hab nun in der Charakter.cpp Datei das reingemacht:



C-/C++-Quelltext

1
2
3
4
5
6
7
extern int Testvariable;

int Test ()
{
    Testvariable += 105;
    return Testvariable;
}


Musste aber auch in der anderen Datei angeben (da wo es Diffiniert wurde) wo Test() ist

C-/C++-Quelltext

1
extern int Test();


so also. Das ist doch irgendwie auch total umständlich oder nicht? Da ist es doch einfacher den Wert direkt weiterzugeben mit der Funktion. Muss man eben dann in die Headerdatei vermerken.

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

5

23.11.2010, 19:10

Es hat ja auch niemand behauptet, dass das schlüsselwort extern so besonders toll ist ^^

Werbeanzeige