Video: Hur man bygger och installerar en timmerstuga från Attefallshuset24 2024
Strukturen mallar har många intressanta användningsområden, till exempel att skapa ett datalager som inte är beroende av en viss typ. StructureTemplate-exemplet här visar en sådan användning.
#include using namespace std; mallstruktur Volym {T höjd; T bredd; T längd; Volym () {height = 0; bredd = 0; längd = 0;} T getvolume () {returhöjd * bredd * längd;} T getvolume (T H, T W, T L) {höjd = H; bredd = W; längd = L; returhöjd * bredd * längd;}}; int main () {Volym först; cout << "första volymen:" << först. getvolume () << endl; först. höjd = 2; först. bredd = 3; först. längd = 4; cout << "första volymen:" << först. getvolume () << endl; Volym andra; cout << "andra volymen:" << sekund. getvolume (2, 1, 3, 2, 4, 3) << endl; cout << "höjd:" << sekund. höjd << endl; cout << "bredd:" << sekund. bredd << endl; cout << "längd:" << sekund. längd << endl; returnera 0;}
I det här fallet innehåller strukturen höjd-, bredd- och längddatavärden som koden kan använda för att bestämma volymen. Strukturen innehåller en konstruktör för att initialisera värdena, så även om någon kallar getvolume () utan att initiera strukturen kommer inget dåligt att hända.
Strukturen tillåter oberoende åtkomst av var och en av datavärdena. Du kan ställa in eller få dem efter behov.
Getvolume () -funktionen är överbelastad. Du kan ringa det med eller utan inmatningsvärden. Koden i huvud () tester strukturen noggrant. Här är vad du ser som utgång från det här exemplet:
Första volymen: 0 Första volymen: 24 Andra volymen: 28. 896 Höjd: 2. 1 Bredd: 3. 2 Längd: 4. 3
Du kan använda strukturer för ett annat intressant syfte. C ++-standarden säger att du inte kan skapa en typedef-mall. Följande kod ger till exempel ett fel när du försöker kompilera det:
mall typedef map MyDef;
När du försöker kompilera den här koden i Kod:: Block ser du följande fel:
fel: malldeklaration av 'typedef'
Du kan dock definiera en typedef inom en strukturmall. StructureTemplate2 exempelkoden här visar hur.
#include # include using namespace std; mallstruktur MyDef {typedef map Type;}; int main () {MyDef:: Typ äktenskap; äktenskap ["Tom"] = "Suzy"; äktenskap ["Harry"] = "Harriet"; cout << äktenskap ["Tom"] << endl; cout << äktenskap ["Harry"] << endl; returnera 0;}
I det här exemplet överträffas C ++ -gränserna genom att placera typefältet i strukturen MyDef. Samma struktur kan hålla några antal typedef-poster.
Använda en typedef på detta sätt gör det lättare att arbeta med kartan.Allt du behöver oroa dig är värdetypen - nyckeltypen är redan definierad som sträng.