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

1

17.03.2009, 11:26

auf geschützte Membervariable zugreifen

Hi

hab ein (Anfänger)Problem, wahrscheinlich ist die Lösung ganz einfach, steh aber irgendwie aufm Schlauch :?

Ich habe eine Klasse für einen Spieler, die als Membervariablen (protected, da es gleichzeitig eine Basisklasse für Vererbungen ist) unter anderem zwei int-Werte besitzt.

Ich muss nun über die main() Funktion auf diese geschützten Membervariablen zugreifen, weiß aber nicht wie ich das anstellen soll. Wenn man diese Variablen z.B. einfach nur ausgeben will, dann kann man ja eine Memberfunktion erstellen, die das einfach mit cout tut.

Aber wie kann ich über eine Memberfunktion den Wert wirklich übergeben? Vllt. über return? Ist aber keine schöne Lösung, oder?

Oder besser über einen Zeiger/eine Referenz? Aber kann man auf diese Weise einfach auf geschützte Membervariablen zugreifen?

Gruß Sechem

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

2

17.03.2009, 11:32

Bin selbst noch Anfänger, aber was spricht gegen eine public funktion, welche dir dann den wert der private variable zurückliefert? Ist soweit ich weiß eine recht gängige vorgehensweise. Der Sinn von private vars ist ja, dass man von "außen" nicht drauf zugreifen kann, wenn du es über einen pointer machst, kann man sie auch ändern... also schreib dir einfach ne 1-zeilige GetVar() funktion, die per return den wert liefert

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

3

17.03.2009, 11:33

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
void setIntVariable(int wert)
{
        intVariable = wert;
}

int getIntVariable()
{
        return intVariable;
}

Anonymous

unregistriert

4

17.03.2009, 11:38

K-Bal
Bei sowas, muss man die Variable gar nicht mehr private/protected machen. Hat genau den selben Effekt wie vorher, nur das man jetzt nicht mehr mit = arbeiten kann, sondern einen weiteren call benötigt.

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

5

17.03.2009, 11:40

Zitat von »"unsigned long"«

K-Bal
Bei sowas, muss man die Variable gar nicht mehr private/protected machen. Hat genau den selben Effekt wie vorher, nur das man jetzt nicht mehr mit = arbeiten kann, sondern einen weiteren call benötigt.


Schon, aber man kann bei Bedarf noch Sicherheitsabfragen etc einbauen. War nur ein Minimalbeispiel für Setter/Getter.

6

17.03.2009, 11:44

Das heißt, ich müsste dann de Wert der übergebenen Membervariable in einer neuen Variable in der main() Funktion speichern. Na gut, wenn das die einfachste Möglichkeit ist..
Dachte es gäbe vllt. noch eine "elegantere" Lösung.

Vielen Dank :)

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

7

17.03.2009, 11:47

Zitat von »"Sechem"«

Das heißt, ich müsste dann de Wert der übergebenen Membervariable in einer neuen Variable in der main() Funktion speichern. Na gut, wenn das die einfachste Möglichkeit ist..
Dachte es gäbe vllt. noch eine "elegantere" Lösung.

Vielen Dank :)


Es kommt immer darauf an, was du machen willst. Wenn du mit dem Wert nur mal eben einen einzelnen Funktionsaufruf machen möchtest, brauchst du ihn nicht unbedingt zwischenspeichern, sondern kannst ihn auch direkt in diesem Funktionsaufruf abfragen.

8

17.03.2009, 12:46

Ne, es sind mehrere Funktionsaufrufe..
Aber ok, lässt sich machen!

Werbeanzeige