Video: Vandskuring (filtsning) og pudsning af husets vægge udendørs. Lær det her 2025
Strukturmaler har mange interessante bruksområder, for eksempel å lage et datalager som ikke er avhengig av en bestemt type. StructureTemplate-eksemplet her viser en slik bruk.
#include bruk av navneområde std; template struct Volum {T høyde; T bredde; T lengde; Volum () {høyde = 0; bredde = 0; lengde = 0;} T getvolume () {returhøyde * bredde * lengde;} T getvolume (T H, T W, T L) {høyde = H; bredde = W; lengde = L; returhøyde * bredde * lengde;}}; int main () {Volum først; cout << "første volum:" << først. getvolume () << endl; først. høyde = 2; først. bredde = 3; først. lengde = 4; cout << "første volum:" << først. getvolume () << endl; Volum andre; cout << "andre volum:" << sekund. getvolume (2. 1, 3. 2, 4. 3) << endl; cout << "høyde:" << sekund. høyde << endl; cout << "bredde:" << sekund. bredde << endl; cout << "lengde:" << sekund. lengde << endl; returner 0;}
I dette tilfellet inneholder strukturen høyde-, bredde- og lengdeverdier som koden kan bruke til å bestemme volumet. Strukturen inkluderer en konstruktør for å initialisere verdiene, så selv om noen kaller getvolume () uten å initialisere strukturen, skjer ikke noe dårlig.
Strukturen tillater uavhengig tilgang til hver av dataverdiene. Du kan sette eller få dem etter behov.
Getvolume () -funksjonen er overbelastet. Du kan ringe det med eller uten inngangsverdier. Koden i main () tester strukturen grundig. Her ser du som utgang fra dette eksempelet:
Første volum: 0 Første volum: 24 Andre volum: 28. 896 Høyde: 2. 1 Bredde: 3. 2 Lengde: 4. 3
Du kan bruke strukturer for et annet interessant formål. C + + -standarden sier at du ikke kan lage en typedef-mal. Følgende kode genererer for eksempel en feil når du prøver å kompilere den:
template typedef map MyDef;
Når du prøver å kompilere denne koden i Kode:: Blokker ser du følgende feil:
feil: maldeklarasjon av 'typedef'
Du kan imidlertid definere en typedef i en strukturmal. StructureTemplate2 eksempelkoden her viser hvordan.
#include # include using namespace std; template struct MyDef {typedef map Type;}; int main () {MyDef:: Type ekteskap; ekteskap ["Tom"] = "Suzy"; ekteskap ["Harry"] = "Harriet"; cout << ekteskap ["Tom"] << endl; cout << ekteskap ["Harry"] << endl; returner 0;}
Dette eksemplet overstyrer C ++-begrensningene ved å plassere typefeltet i strukturen MyDef. Samme struktur kan inneholde et hvilket som helst antall typedef-oppføringer.
Bruk en typedef på denne måten gjør det enklere å jobbe med kart.Alt du trenger å bekymre deg for er verdienstypen - nøkkeltypen er allerede definert som streng.
