På C ++ språk er toppfiler veldig viktige. Hvis vi bruker noen nøkkelord eller innebygde metoder for C ++, må vi legge til deres respektive overskriftsfiler i koden vår, ellers vil kompilatoren gi oss feilen. For å forstå feilen bedre, først vil vi diskutere hvilke overskriftsfiler og hva som er deres formål. Headerfiler er inkludert øverst i koden.
Headerfiler er akkurat som importbiblioteker, som vi importerer, for å bruke funksjonalitetene deres. Disse filene fungerer noen ganger som klassefiler som har forskjellige funksjoner i dem. Hodefiler er nødvendige å legge til for å bruke dem. Hvis vi prøver å bruke disse funksjonene direkte og ikke importerer overskriftsfilene, får vi denne feilen. Denne feilen oppstår også når kompilatoren oppdager noen ukjent identifikator som har en kjent datatype, men ikke har en kjent definisjon. Noen ganger oppstår denne feilen også hvis du bruker en utdatert IDE eller kompilator.
Denne feilen oppstår i forskjellige typer som er som følger:
Dette er ikke en innebygd funksjon eller bibliotek. Vi diskuterer heller at det er en feil, og som vi alle vet at en feil ikke har en spesifikk syntaks. Dette er meldingen som kompilatoren kommer tilbake når vi får feilen vår.
Feil: felt 'overordnet' har ufullstendig type 'a'
Merk at i feilmeldingen ovenfor er nøkkelordene 'overordnet' og 'A' ikke statiske. De endrer seg avhengig av koden din. Denne tingen vil bli forstått etter at vi har utført eksemplene.
Eksempel # 01:
For å ha en bedre forståelse av feilen vår, vil vi nå utføre et eksempel for å få feilen. Etter det vil vi løse feilen. For å gjøre det, har vi erklært en klasse ved navn “Testclass”. I vår klasse i delen Public Access Modifier har vi opprettet et objekt i klassen vår med navnet “Parent”.
Etter det opprettet vi en peker i klassen vår som peker mot pekeren til gjenstanden for klassen vår. Vi gjør ikke noe annet og heller ikke ringer noe i hovedmetoden () eller utfører noen operasjon. Dette er det enkleste eksemplet vi har prøvd å utføre for å få deg til å forstå. Nå kjører vi koden vår for å se resultatene.
#inkludereVed sammenstilling av koden vår har systemet kastet feilen og har ikke vellykket samlet den. For å oppdage årsaken til denne feilen, la oss se på feilmeldingen. Feilmeldingen sier at "felt" overordnede "har ufullstendig type" testklasse "". Dette er den samme feilen vi diskuterer som er en ufullstendig type som ikke er tillatt. Så systemet har vist denne feilen fordi vi har en ufullstendig type som vi vet nå ikke er tillatt. Nå vil vi løse feilen vår.
For å løse feilen vår, har vi ikke gjort noe ekstra. Vi har nettopp erstattet gjenstanden for testklasse fra et enkelt objekt til en peker. Vi kjører nå vår modifiserte kode for å observere hvordan den fungerer.
Denne gangen har koden vår utført med suksess uten å gi noen feil. Vi utførte ingen operasjoner i koden vår, så den har en tom utgang. Årsaken til feilen var at vi prøvde å lage en forekomst av gjenstanden for en klasse som ikke er mulig fordi vi allerede har brukt den i konstruktøren. I så fall ringer kompilatoren koden rekursivt, og den blir uendelig, det er derfor det ikke er mulig.
Eksempel # 02:
Vi diskuterte allerede i vår introduksjonsdel at denne feilen kan være forårsaket av flere årsaker. Vårt mål her er å diskutere så mange grunner som mulig. Så for å oppnå vårt mål, har vi utført et annet enkelt eksempel for å få deg til å forstå feilen. For å utføre dette eksemplet har vi ikke laget noen klasse, struktur eller funksjon, eller noe. Vi har ganske enkelt kalt StringStream som brukes til å operere med strenger som å beregne antall ord osv.
#inkludereDette er feilen vi vil få etter utførelsen av koden vår, noe som betyr at også denne gangen var koden ikke i stand til å kompilere vellykket. Feilmeldingen sier at samlet std :: StringStream “OBJ” har en ufullstendig type og ikke kan defineres. Så her er feilmeldingen litt forskjellig fra den forrige. Men poenget her er det samme: at det er en "ufullstendig type". Men hvorfor skjedde dette problemet denne gangen da vi ikke brukte en klasse? Vi vil prøve å eliminere feilen, og ved å gjøre det vil vi også finne ut grunnen til at dens forekommer.
Vi diskuterte tidligere at denne feilen også oppstår hvis overskriftsfilen mangler i koden vår. Så vi vil legge til en overskriftsfil som er 'sstream' og se hva som skjer. La oss utføre koden vår.
Denne gangen blir koden utført vellykket. Årsaken til feilen var at vi brukte StringStream -funksjonen, men vi la ikke til biblioteket i overskriften Files -delen. Etter å ha lagt til overskriftsfilen, har koden utført med hell.
Konklusjon
I denne guiden diskuterte vi en feil som oppstår under koding på C ++ språk: denne feilen er 'ufullstendig type'. Vi diskuterte årsaken til feilen og måtene å eliminere denne feilen. Vi utførte også eksempler som håndterer forskjellige scenarier for å få deg til å forstå feilen. Til slutt vil vi oppsummere hele artikkelen ved å si at du må sørge for noen få ting for å unngå å få slike feil. De få tingene er at vi må sjekke om vi har tatt med alle nødvendige overskriftsfiler i koden vår eller ikke. Sjekk at datatypene til objektene er riktige eller ikke. I de fleste tilfeller bruker vi enkle objekter, men koden vår krever bruk av pekere. Hvis vi gjør en fremover erklæring om noen struktur eller klasse i koden vår, må vi sjekke om definisjonen av den klassen eller strukturen er tilgjengelig i vår kode eller ikke.