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

TigerClaw25

unregistriert

1

12.03.2013, 11:11

Frage zu Vektoren und "::" Operator

Hallo zusammen,

hab eine Frage zum Buch "C++ für Spieleprogrammierer". Auf Seite 274 werden Vektoren erklärt. Dort findet sich die Zeile:

vector<int>::iterator i;

Ich kenne aus dem Buch den Operator "::" lediglich aus dem Bereich von Funktionen, also wenn ich Funktionen aus bestimmten Klassen aufrufen oder definieren möchte. Was bedeutet dieser in diesem Zusammenhang mit Vektoren? Das wird leider nicht erläutert. Ist "Iterator" eine Funktion der Template-Funktion "vector"? Was ist das "i" dann? Eine Variable, ein Objekt ... ?

Danke vorab ...


Übrigens hab ich das Kapitel Logfile-Klasse nicht ganz verstanden, ist noch zu komplex :( Also der Zusammenhang ...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

12.03.2013, 11:21

Das hat nichts mit Funktionen zu tun, sondern beschreibt eine Hierarchie. Es erfolgt dabei ein Zugriff auf einen Typ, eine Funktion, ein whatever. Man greift auf ein Unterelement zu.
Das gilt für Klassen in Namespaces (sf::Vector), für Variablen in Namespaces (std::cout), für Makros oder Funktionen in Namespaces (std::max), aber auch für Typen definiert in Klassen, wie eben den Iterator-Typ eines Vektors.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

3

12.03.2013, 11:23

Ich habe zwar keine Ahnung von C++, aber ich würde vermuten, dass iterator ein Typ (struct, class o. ä.) unterhalb von vector<int> ist und i eine Variable vom Typ vector<int>::iterator.
Aber andere Forenmitglieder können dir die Frage bestimmt besser beantworten. ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

TigerClaw25

unregistriert

4

12.03.2013, 16:27

Redet ihr gerade von Vererbung?

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

5

12.03.2013, 16:35

Redet ihr gerade von Vererbung?

nein
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

TigerClaw25

unregistriert

6

12.03.2013, 17:11

Eine Klasse unterhalb einer Klasse heißt für mich Vererbung, zumindest steht im Buch nichts weiter darüber und aus den zuvor behandelten Themen wird das auch nicht ersichtlich

Tobiking

1x Rätselkönig

  • Private Nachricht senden

7

12.03.2013, 17:26

Es geht dabei um eine enthalten-sein Beziehung. Eine Klasse innerhalb eines Namespace wird dabei auch als unterhalb des Namespaces bezeichnet. Stell es dir wie ein Verzeichnisbaum vor, in dem es Ordner und Unterordner gibt.

Der komplette Typ std::vector<int>::iterator wäre dann ein Ordner "std" mit Unterordner "vector<int>", in dem der Typ "iterator" liegt. Das ist in diesem Falle wichtig, da es in "std" auch einen Ordner "vector<char>" geben kann, in dem ebenfalls ein "iterator" liegt, der ganz anders aussehen kann.

TigerClaw25

unregistriert

8

12.03.2013, 17:41

Ok, danke für die Info. habe es verstanden und mache mich weiter an die verketteten Listen. Ist alles nicht einfach :)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

12.03.2013, 19:25

Eine Klasse unterhalb einer Klasse heißt für mich Vererbung

Egal, wie es für dich heißt, das ist für die Allgemeinheit nicht der Fall. Vererbung ist eine Spezialisierung einer Klasse. Eine geschachtelte Klasse innerhalb einer anderen, ist keine Vererbung.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

10

12.03.2013, 21:22

Vielleicht wäre es noch gut zu erwähnen, dass :: für einen statischen Zugriff steht.
Hier ist vector eine Klasse im Namespace std.
Da iterator ein statischer Member von vector ist musst du mit :: darauf zugreifen. Für nicht-statische Zugriffe kann man dann . bzw. -> verwenden.

Werbeanzeige