Comment construire un modèle de structure en C ++

Modèles de structures ont de nombreuses utilisations intéressantes, telles que la création d'un référentiel de données qui ne dépend pas d'un type particulier. La StructureTemplate par exemple ici montre un tel usage.

#comprendre using namespace std-modèleVolume struct {T hauteur T Largeur T-longueur-Volume () {height = 0-width = 0 longueur = 0-} T getVolume () {hauteur de retour * largeur * longueur-} T getVolume (TH, TW, TL ) {height = H-width = W-longueur = hauteur L-retour * largeur * longueur -}} - int main () {Volume première cout lt; lt; «Premier volume:" lt; lt; first.getvolume () lt; lt; endl-first.height = 2-first.width = 3-first.length = 4-cout lt; lt; «Premier volume:" lt; lt; first.getvolume () lt; lt; endl-Volume deuxième cout lt; lt; "Deuxième volume:" lt; lt; second.getvolume (2.1, 3.2, 4.3) lt; lt; endl-cout lt; lt; "Hauteur:" lt; lt; second.height lt; lt; endl-cout lt; lt; "Largeur: " lt; lt; second.width lt; lt; endl-cout lt; lt; "Longueur:" lt; lt; second.length lt; lt; endl-retour 0-}

Dans ce cas, la structure contient des valeurs hauteur, la largeur, et données de longueur que le code peut utiliser pour déterminer le volume. La structure comprend un constructeur pour initialiser les valeurs, même si quelqu'un vous appelle getVolume () sans initialiser la structure, rien de mauvais va se passer.

La structure permet un accès indépendant de chacune des valeurs de données. Vous pouvez définir ou obtenir au besoin.

La getVolume () fonction est surchargé. Vous pouvez appeler cela avec ou sans valeurs d'entrée. Le code de main () teste à fond la structure. Voici ce que vous voyez en sortie de cet exemple:




Premier volume: le volume 0First: le volume 24Second: 28.896Height: 2.1Width: 3.2Length: 4.3

Vous pouvez utiliser des structures à d'autres fins intéressant. La norme de l'C dit que vous ne pouvez pas créer un typedef modèle. Par exemple, le code suivant génère une erreur lorsque vous essayez de compiler:

modèlecarte typedef MyDef-

Lorsque vous essayez de compiler ce code dans Code :: Blocks, vous voyez l'erreur suivante:

déclaration de modèle de «typedef ': d'erreur

Cependant, vous pouvez définir une typedef dans un modèle de structure. La StructureTemplate2 un exemple de code montre comment ici.

#comprendre #comprendre using namespace std-modèlestruct MyDef {typedef carte Type -} - int main () {MyDef:: Type mariages-mariages ["Tom"] = "Suzy" -marriages ["Harry"] = "Harriet" -cout lt; lt; mariages ["Tom"] lt; lt; endl-cout lt; lt; mariages ["Harry"] lt; lt; endl-retour 0-}

Cet exemple permet de surmonter les limites de la C en plaçant le typedef à l'intérieur de la struct, MyDef. La même structure peut contenir un nombre quelconque de typedef entrées.

Utilisation d'un typedef de cette manière, il est plus facile de travailler avec carte. Tout ce que vous devez vous préoccuper est le type de valeur - le type de clé est déjà défini comme chaîne.


» » » » Comment construire un modèle de structure en C ++