¿Cómo construir un modelo de estructura en C ++

Estructura de las plantillas tienen muchos usos interesantes, como la creación de un repositorio de datos que no depende de un tipo particular. los StructureTemplate ejemplo muestra un tal uso.

#include using namespace std-plantillastruct Volume {T Altura-T Ancho-T-longitud de volumen () {height = 0-width = 0-longitud = 0-} T getVolume () {height retorno * ancho * longitud-} T getVolume (TH, TW, TL ) {height = H-width = W de longitud = altura L-retorno * Ancho * Longitud -}} - int main () {volumen primera cout lt; lt; "En primer volumen:" lt; lt; first.getvolume () lt; lt; endl-first.height = 2-first.width = 3-first.length = 4-cout lt; lt; "En primer volumen:" lt; lt; first.getvolume () lt; lt; endl-volumen segunda cout lt; lt; "Segundo volumen:" lt; lt; second.getvolume (2.1, 3.2, 4.3) lt; lt; endl-cout lt; lt; "Altura" lt; lt; second.height lt; lt; endl-cout lt; lt; "Ancho" lt; lt; second.width lt; lt; endl-cout lt; lt; "Largo: " lt; lt; second.length lt; lt; endl retorno 0-}

En este caso, la estructura contiene valores de altura, anchura y longitud de datos que el código puede utilizar para determinar el volumen. La estructura incluye un constructor para inicializar los valores, por lo que incluso si alguien llama getVolume () sin inicializar la estructura, nada malo va a pasar.

La estructura permite el acceso independiente de cada uno de los valores de datos. Puede establecer o hacer que sea necesario.

los getVolume () función está sobrecargado. Se le puede llamar con o sin valores de entrada. El código en main () pruebas, la estructura a fondo. Esto es lo que se ve como salida de este ejemplo:

En primer volumen: volumen 0First: volumen 24Second: 28.896Height: 2.1Width: 3.2Length: 4.3

Puede utilizar estructuras para otro propósito interesante. El estándar de C ++ dice que no se puede crear un typedef modelo. Por ejemplo, el siguiente código produce un error cuando intenta compilarlo:

modelomapa typedef MyDef-

Cuando intenta compilar este código en Code :: Blocks, verá el siguiente error:

declaración de plantilla de 'typedef': error

Sin embargo, se puede definir un typedef dentro de una plantilla estructura. los StructureTemplate2 ejemplo de código muestra cómo aquí.

#include #include using namespace std-plantillastruct MyDef {typedef el mapa Tipo -} - int main () {MyDef:: Tipo matrimonios-matrimonios ["Tom"] = -marriages "Suzy" ["Harry"] = "Harriet" -cout lt; lt; matrimonios ["Tom"] lt; lt; endl-cout lt; lt; matrimonios ["Harry"] lt; lt; endl retorno 0-}

Este ejemplo supera las limitaciones del C ++ mediante la colocación de la typedef dentro de struct, MyDef. La misma estructura puede contener cualquier número de typedef entradas.

Usando un typedef de esta manera hace que sea más fácil trabajar con mapa. Todo lo que necesita preocuparse es el tipo de valor - el tipo de clave que ya se define como cuerda.




» » » » ¿Cómo construir un modelo de estructura en C ++