Vorwärtsdeklarationen in der stl
-
Ich habe mir eine header mit typedefs geschrieben. Damit das klappt, muss ich aber u.a. z.B. string und sstream einbinden. Wie müsste eine Vorwärtsdeklaration aussehen, weil ich eigentlich nicht immer alles brauch, was ich in ihr "umschreibe"...
-
Wenn du sie unbedingt selbst machen willst:
template<class E, class T = char_traits<E>, class A = allocator<T> > class basic_string;
Aber das dürfte etwas zuviel Aufwand werden. Für die Stream-Klassen gibts auf jeden Fall die <iosfwd> die bereits alle Forward-Deklarationen enthält. Im Notfall einfach <string> includieren, ist das Projekt so groß, dass du für die STL Forward-Deklarationen benötigst? Welchen Grund hast du dafür? Soviel Zeitersparnis ist das nicht.
MfG SideWinder
-
Das Problem bei den Vorwärtsdeklarationen für die STL is ja eigentlich,
dass sie im namespace std stehen müssen. In dem darf man aber eigentlich
nichts hinzufügen, is glaub ich auch der Grund warums überhaupt den Header
iosfwd gibt.Wirst also glaub ich wohl oder übel nicht drum rum kommen
die Header zu inkludieren, selbst wenn ne Vorwärtsdeklaration reichen würde.Vorwärtsdeklarationen sind ja dazu um Abhängigkeiten zu verlieren. Solche
Abhängigkeiten zeigen sich halt dann, wenn man in einem Header was verändert.
Allerdings glaub ich, dass sich die STL Header nicht so schnell ändern sollten
-
Vorwärtsdeklarationen sind nicht portabel möglich - denn die STL implementierung darf zusätzliche Template Parameter haben, die einen default value haben müssen. Und das macht vorwärtsdeklarationen weitgehend unportabel... leider
-
das wär definitiv etwas, was der Standard brauch. Das nur iostream (=> iosfwd) forward Deklarationen hat, ist unverständlich.