Wie eine Strukturvorlage in C ++ erstellen

Strukturvorlagen haben viele interessante Anwendungen, wie zum Beispiel ein Daten-Repository erstellen, die auf eine bestimmte Art nicht abhängen. Das StructureTemplate Beispiel zeigt eine solche Verwendung.

#einschließen using namespace std-templatestruct Volume {T höhen T Breite-T Länge Volumen () {height = 0-width = 0-length = 0-} T getVolume () {return Höhe * Breite * längs-} T getVolume (TH, TW, TL ) {height = H-width = W-Länge = L-Rück Höhe * Breite * Länge -}} - int main () {Volume first-cout lt; lt; "Erster Band:" lt; lt; first.getvolume () lt; lt; Endl-first.height = 2-first.width = 3-first.length = 4-cout lt; lt; "Erster Band:" lt; lt; first.getvolume () lt; lt; Endl-Volume Second-cout lt; lt; "Zweiter Band: " lt; lt; second.getvolume (2.1, 3.2, 4.3) lt; lt; Endl-cout lt; lt; "Höhe:" lt; lt; second.height lt; lt; Endl-cout lt; lt; "Breite: " lt; lt; second.width lt; lt; Endl-cout lt; lt; "Länge" lt; lt; second.length lt; lt; Endl-return 0-}

In diesem Fall enthält die Strukturhöhe, Breite und Länge Datenwerte, die den Code zu bestimmen Volumen verwenden können. Die Struktur enthält einen Konstruktor, die Werte zu initialisieren, so dass selbst wenn jemand anruft getVolume () ohne die Struktur zu initialisieren, nichts Schlimmes passieren wird.

Die Struktur ermöglicht eine unabhängige Zugriff von jeder der Datenwerte. Sie können sie setzen oder erhalten nach Bedarf.

Das getVolume () Funktion ist überlastet. Sie können es nennen, mit oder ohne Eingabewerte. Der Code in Main() prüft gründlich die Struktur. Hier ist, was Sie als Ausgabe von diesem Beispiel zu sehen:

Erster Band: 0First Volumen: 24Second Volumen: 28.896Height: 2.1Width: 3.2Length: 4,3

Sie können Strukturen für einen weiteren interessanten Zweck verwenden. Die C ++ Standard sagt, dass Sie nicht schaffen können typedef Vorlage. Beispielsweise erzeugt der folgende Code einen Fehler, wenn Sie versuchen, es zu kompilieren:

Vorlagetypedef Karte MyDef-

Wenn Sie versuchen, diesen Code in Code :: Blocks zu kompilieren, sehen Sie die folgende Fehlermeldung:

Fehler: Template-Deklaration von 'typedef'

Allerdings können Sie definieren ein typedef innerhalb einer Strukturvorlage. Das StructureTemplate2 Beispielcode hier zeigt, wie.

#einschließen #einschließen using namespace std-templatestruct MyDef {typedef Karte Typ -} - int main () {MyDef:: Typ Ehen Ehen [ "Tom"] = "Suzy" -marriages [ "Harry"] = "Harriet" -cout lt; lt; Ehen [ "Tom"] lt; lt; Endl-cout lt; lt; Ehen [ "Harry"] lt; lt; Endl-return 0-}

Dieses Beispiel überwindet die C ++ Einschränkungen, die durch die Platzierung typedef innerhalb der struct, MyDef. Die gleiche Struktur halten kann eine beliebige Anzahl von typedef Einträge.

Verwendung einer typedef Auf diese Weise zu arbeiten, ist es einfacher, mit Karte. Alles, was Sie sich Sorgen machen müssen ist der Werttyp - der Schlüssel Typ bereits definiert ist als Schnur.

Menü