Guten morgen, ich habe eine Frage zur STL. Bisher konnte ich in Bezug auf Klassen den Binary scope Operator :: kennenlernen, um entweder aus der Main-Funktion auf eine statische variable zuzugreifen oder aber um außerhalb der klassedeklaration die einzelnen memberfunktionen zu definieren wie z.b. klasse1::foo(){} Aber das hier verstehe ich nicht: class_name<template_parameters>::iterator name Was ist iterator? Ein statischer datentyp??!
Jens schrieb: > Was ist iterator? Ein statischer datentyp??! Ein Iterator wird in einem Template beschrieben, einer Meta-Klassenbeschreibung. Die Instanz selbst ist natürlich ein Obkekt. Grüsse, René
Jens schrieb: > Was ist iterator? Ein statischer datentyp??! Richtig: iterator ist ein Datentyp. Bspw:
1 | tenplate<typename T> struct vector |
2 | {
|
3 | typedef T *iterator ; |
Ein einfacheres Beispiel:
1 | class MyClass |
2 | {
|
3 | public:
|
4 | typedef int EntryType; |
5 | EntryType get(){return m_Entry;} |
6 | // ...
|
7 | EntryType m_Entry; |
8 | };
|
9 | |
10 | //...
|
11 | |
12 | MyClass blubb; |
13 | MyClass::EntryType x = blubb.get(); |
EntryType und dein iterator sind im Sinn der Fragestellung das gleiche, nämlich in einer Klasse enthaltene typedefs.
Ah, ok, Vielen Dank für die nützlichen Informationen. Was mich allerdings noch etwas verwirrt, ist die Tatsache, dass ich den "::"-Operator entweder außerhalb der Klassendeklaration bei der Definition der Funktionen oder aber bei der Initialisierung von statischen Membervariablen verwendet habe.
Jens schrieb: > Was mich > allerdings noch etwas verwirrt, ist die Tatsache, dass ich den > "::"-Operator entweder außerhalb der Klassendeklaration bei der > Definition der Funktionen oder aber bei der Initialisierung von > statischen Membervariablen verwendet habe. Der ::-Operator wird für externe Zugriffe auf alles verwendet, was innerhalb der Klasse klassenweit deklariert ist. Darunter fallen neben Klassenvariablen und -methoden (mit static deklariert) auch Typedeklarationen, Enum-Konstanten und sicher noch einiges mehr. Edit: Beispiel vergessen, hier ist es:
1 | class C { |
2 | public:
|
3 | typedef int MyInt; |
4 | enum MyEnum { ME_ZERO, ME_ONE, ME_TWO }; |
5 | static int i; |
6 | };
|
7 | |
8 | void test() { |
9 | C::MyInt j = C::i; |
10 | // ^^ ^^
|
11 | C::MyEnum me = C::ME_ONE; |
12 | // ^^ ^^
|
13 | }
|
:
Bearbeitet durch Moderator
Jens schrieb: > Was ist iterator? Ein statischer datentyp??! Was meinst du mit "statisch"? In C++ kann man nicht für jede Instanz einer Klasse eigene Datentypen definieren. Somit gehört ein in der Klasse definierter Datentyp immer zur Klasse selbst und nicht zu deren Instanzen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.