Como construir um modelo de Estrutura em C ++

modelos de estrutura têm muitos usos interessantes, como a criação de um repositório de dados que não depende de um tipo particular. o StructureTemplate exemplo aqui mostra um tal uso.

#incluir usando namespace std-templatestruct Volume {T Altura-T largura-comprimento T-Volume () {height = 0 width =-0-length = 0-} getVolume T () {height retorno * largura * comprimento-} T getVolume (TH, TW, TL ) {height = H-width = W-length = altura L-retorno * largura * comprimento -}} - int main () {Volume primeira cout lt; lt; "Primeiro de volume:" lt; lt; first.getvolume () lt; lt; endl-first.height = 2-first.width = 3-first.length = 4-cout lt; lt; "Primeiro de volume:" lt; lt; first.getvolume () lt; lt; endl-Volume segunda-cout lt; lt; "Segundo volume:" 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; "Largura: " lt; lt; second.width lt; lt; endl-cout lt; lt; "Comprimento:" lt; lt; second.length lt; lt; endl-retorno 0-}

Neste caso, a estrutura contém valores de altura, largura e comprimento de dados que o código pode usar para determinar volume. A estrutura inclui um construtor para inicializar os valores, por isso mesmo, se alguém chama getVolume () sem inicializar a estrutura, nada de ruim vai acontecer.

A estrutura permite um acesso independente de cada um dos valores de dados. Você pode definir ou obtê-los, conforme necessário.

o getVolume () função está sobrecarregado. Você pode chamá-lo com ou sem valores de entrada. O código na a Principal() ensaios, a estrutura completamente. Aqui está o que você vê como saída a partir deste exemplo:

Primeiro volume: volume 0First: o volume 24Second: 28.896Height: 2.1Width: 3.2Length: 4.3

Você pode usar estruturas para outra finalidade interessante. padrão do C ++ diz que você não pode criar um typedef modelo. Por exemplo, o código a seguir produz um erro quando você tenta compilá-lo:

modelomapa typedef MyDef-

Ao tentar compilar este código no Code :: Blocks, você vê o seguinte erro:

declaração de modelo de 'typedef': Erro

No entanto, você pode definir uma typedef dentro de um modelo de estrutura. o StructureTemplate2 exemplo de código aqui mostra como.

#incluir #incluir usando namespace std-templateMyDef struct {typedef mapa Tipo -} - int main () {MyDef:: Tipo casamentos-casamentos [ "tom"] = "Suzy" -marriages [ "Harry"] = "Harriet" -cout lt; lt; casamentos [ "Tom"] lt; lt; endl-cout lt; lt; casamentos [ "Harry"] lt; lt; endl-retorno 0-}

Este exemplo supera as limitações do C ++, colocando o typedef dentro do struct, MyDef. A mesma estrutura pode conter qualquer número de typedef entradas.

Usando um typedef desta maneira faz com que seja mais fácil de trabalhar mapa. Tudo que você precisa se preocupar é o tipo de valor - o tipo de chave já está definido como corda.

menu