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

LuGo

Frischling

  • »LuGo« ist der Autor dieses Themas

Beiträge: 54

Wohnort: Attendorn im schönen Sauerland

Beruf: Schüler

  • Private Nachricht senden

1

27.11.2010, 18:59

[Gelöst] [C++] Problem mit friendklassen

Hallo zusammen,

ich habe ein Problem mit folgenden Klassen, besser mit der Funktion. (Das unwichtige lasse ich raus)

C-/C++-Quelltext

1
2
3
4
5
6
class CSpieler 
{ 
friend class: CBahnhof 
int Vermögen; 
//Das Vermögen wird mit dem Wert 2000 initialisiert 
};


Klasse: CBahnhof

C-/C++-Quelltext

1
2
3
4
5
6
7
class CBahnhof 
{ 
int BahnhofBauen (int Vermögen) 
{ 
CSpieler.Vermögen = - 200; 
} 
};


Und jetzt wirft das IntelliSense von VSC++ 2010 folgenden Fehler :( auf: Ein nicht statischer Memberverweis muss relativ zu einem bestimmten Objekt sein. Könnt ihr mir erklären, was ich falsch mache??

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »LuGo« (29.11.2010, 18:20)


2

27.11.2010, 19:16

Vermögen ist keine statische Variable, also brauchst du ein Objekt, auf welches du zugreifst.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

3

27.11.2010, 20:25

du versuchst so vieles was du nicht richtig verstanden hast...
friendklassen solltest du vorerst gar nicht nutzen. erst wenn du einige monate programmiererfahrung hast wirst du sie richtig anwenden können.
ein bahnhof baut sich selbst auf? das ist unlogisch.
ausserdem ist die methode private.
du übergibst den das vermögen als kopie. ich vermute du willst den wert ändern weshalb du einen zeiger benutzen müsstest. da empfielt sich aber die kosten als rückgabewert zu übergeben.
im moment würdest das vermögen auf -200 setzen. du wolltest vermutlich vermögen -= 200; benutzen.
versuch bitte nicht das buch komplett zu lesen und dann alles aufeinmal anzuwenden. das funktioniert nicht. programmieren lernt man mit kleinen beispielprogrammen für jedes einzelne thema.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

LuGo

Frischling

  • »LuGo« ist der Autor dieses Themas

Beiträge: 54

Wohnort: Attendorn im schönen Sauerland

Beruf: Schüler

  • Private Nachricht senden

4

27.11.2010, 20:55

Okay, danke für den Tipp. Ich mache das ganze jetzt über statische Membervariablen, so geht es. Klar baut sich ein Bahnhof nicht selbst auf. Eigentlich sind die Klassen größer, aber ich wollte es übersichtlich und nur denn Fehlerwerfenden Teil verwenden.

5

27.11.2010, 22:28

Versuch lieber die statische Variable zu vermeiden. Ich kenn zwar deinen Code grad nicht, kann aber mit ziemlicher Sicherheit sagen, dass es kein Anwendungsfall für eine statische Variable ist. Der Spieler besitzt das Vermögen und jeder Spieler hat sein eigenes. Was würde bei einer statischen Variable passieren, wenns plötzlich 2 Spieler gibt? ;)

LuGo

Frischling

  • »LuGo« ist der Autor dieses Themas

Beiträge: 54

Wohnort: Attendorn im schönen Sauerland

Beruf: Schüler

  • Private Nachricht senden

6

29.11.2010, 17:23

Thema kann geschlossen werden. Mir ist dann eingefallen, das ich anstelle von CSpieler ein Objekt (z.B. Spieler) hätte erzeugen müssen. Die Antwort war so einfach, das sie schon wieder kompliziert war.

Werbeanzeige