Können wir über eine Instanz auf typdefinierte Typen zugreifen?

8

Ich fragte mich,

%Vor%

Warum kann ich das nicht schreiben als:

%Vor%

Natürlich würde der Typ, der die Map definiert, den ersten Code weniger ausführlich machen - aber das ist nicht mein Punkt. Der Compiler kennt den Typ von mymap . Warum also nicht mymap::iterator auflösen? Gibt es einen Grund, warum iterator nicht über die Instanz zugänglich ist?

    
nakiya 10.03.2011, 07:32
quelle

2 Antworten

12

:: ist ein Scope-Resolution-Operator, der auf der linken Seite den Typnamen oder den Namespace-Namen erwartet. Es akzeptiert keine Objektnamen auf der linken Seite. Dies zuzulassen würde wahrscheinlich viele Dinge in der Sprache überkomplizieren.

Wenn man so etwas erlauben würde, würde man diese Funktionalität wahrscheinlich an den Operator . anhängen, da . operator derjenige ist, der mit Objekten auf der LHS verwendet wird

%Vor%

Aber das würde die Dinge ohnehin unnötig verkomplizieren.

Im zukünftigen C ++ - Standard wird so etwas durch decltype keyword

möglich %Vor%

P.S. Laut dem Wikipedia-Artikel über decltype war seine Verfügbarkeit in qualifizierten IDs Gegenstand von Debatten. Wenn ich es richtig verstanden habe, wurde diese Verwendung schließlich gewählt.

P. P. S. Wie in Kommentaren von @Asha angemerkt, können Sie in der Zukunft C ++ vermeiden, den Typ überhaupt zu benennen

%Vor%     
AnT 10.03.2011, 07:36
quelle
1

Dieser Iterator ist ein Typ, der im Bereich der Map definiert ist und nicht Teil von Objekten ist, die aus Map erstellt wurden.

    
Shamim Hafiz 10.03.2011 07:38
quelle

Tags und Links