Feil kan ikke ringe medlemsfunksjon uten objekt C ++

Feil kan ikke ringe medlemsfunksjon uten objekt C ++
Programmeringsspråket er et knippe forskjellige konsepter, innebygde funksjoner og operasjoner; Det kommer også med mange feil. Disse feilene kan også ha en logisk type, syntaksfeil og andre. Du kan få mange feil mens du koder når du gjør noen logiske eller syntaksfeil i koden. En av feilene fra mange av disse unntakene er "kan ikke kalle medlemsfunksjon uten objekt". Det oppstår når vi prøver å ringe en funksjon i programmet vårt uten å lage et klasseobjekt. Så denne guiden inneholder eksempler for å få denne feilen til å skje, og løsningen for å løse den. Forsikre deg om at du har jobbet med Ubuntu 20.04 System og starte terminalen via “Ctrl+Alt+T”. La oss begynne med eksemplene.

Eksempel 01:

La oss begynne vårt første eksempel for å utdype hvordan vi får feilen "kan ikke ringe medlemsfunksjon uten objekt" i C ++ kode. Så det første vi trenger å gjøre er å opprette en C ++ -fil. Denne filen kan opprettes med noen tekstredigerer i filutforskeren eller i skallet. Du kan prøve å åpne den med VIM -redaktøren, Text Editor eller en annen redaktør som GNU Nano Editor. Så vi har direkte åpnet denne nyopprettede filen i GNU Nano Editor ved hjelp av “Nano” -kommandoen. Nå lanseres den tomme nyopprettede filen i Nano Editor og klar til å brukes.

Vi har startet koden vår med tillegg av noen overskriftsfiler, jeg.e., “Iostream”. Du kan bruke "STD" navneområdet i koden mens du erklærer den for hovedfunksjonen. Ellers må du bruke nøkkelordet "STD" med hver COUT- og CIN -klausul i programmet. Så vi har initialisert den før hovedmetoden ved hjelp av "bruk" nøkkelordet. Vi har laget en enkel klasse som heter “A” i koden. Denne klassen inneholder en enkelt brukerdefinert funksjon som heter “show ()”. Funksjonen inneholder erklæringen om en karaktertypevariabel kalt “A”. Den første cout -uttalelsen av denne funksjonen ber om at en karakter skal legges til av en bruker. "CIN" -klausulen lar en bruker legge til det tegnet på skallet og lagre den i variabelen "a". Den siste cout -setningen har blitt brukt her for å vise tegnet på skallet som brukeren har inndata.

Nå er klassen avsluttet, og vi har startet hovedmetoden. Det er på tide å ringe funksjonen for å utføre den uten å bruke noe annet. Så vi har ganske enkelt brukt klassenavnet “A” med “::” for å kalle funksjonen “show ()” i hovedmetoden. Hovedmetoden er stengt her. Vi er klare til å lagre denne koden med Ctrl+S, da den allerede er fullført.

Kom tilbake til terminalen ved å bruke “Ctrl+x. Nå er det på høy tid å samle koden med C ++ innebygd kompilator av Ubuntu 20.04. Dermed har vi brukt "G ++" -kompilatorinstruksjonen her for å bare samle kodefilen og se om den er feilfri eller ikke. Ved sammenstilling viser det feilen. Dette betyr at vi ikke bare kan utføre eller ringe funksjonsshowet () i klasse “A” uten å lage et objekt i denne klassen.

Så vi må oppdatere kodefilen igjen. Benytt deg av Nano -redaktøren igjen og løse denne feilen. Så den gamle filen åpnes igjen. Vi trenger bare å endre hovedfunksjonen () for å unngå denne feilen så langt. Så vi har laget et objekt “obj” av klasse “a”. Nå har dette objektet "OBJ" blitt brukt her for å kalle funksjonsshowet () til klassen "A" ved å bruke "prikken" mellom objektnavnet og funksjonsnavnet. Lagre koden for å gjenspeile endringene ved utførelse ved hjelp av den enkle snarveisnøkkelen, i.e., “Ctrl+s”. Den oppdaterte koden er vist på bildet nedenfor. La oss komme tilbake til terminalen for å kompilere den oppdaterte koden ved å bruke “Ctrl+X”.

Brukte "G ++" -kompilatorinstruksjonen for kodesamling. Vi har ingen feil denne gangen. Ved utførelse av koden har vi fått resultatet vist nedenfor. Den ba om å gå inn i karakteren, og la til “A”. Til gjengjeld viste det tegnet på skallet. Bruke objektet til å kalle funksjonsshowet ().

Eksempel 02:

La oss få et annet eksempel på å få den samme feilen og løse den etterpå. Så vi åpnet filfeilen.CC og opprettet koden nedenfor. Denne koden er startet fra Iostream Header -filen, STD -navneområdet, og endte på hovedmetoden. Vårt program inneholder to klasser, A og B. A er foreldreklasse, og B er barneklasse for å arve dens egenskaper her. Foreldreklasse A inneholder en funksjon “print ()” som har en enkelt uttalelse som viser at dette er en foreldreklassefunksjon. Barneklassen inneholder en funksjon “show ()” med en cout -uttalelse som viser at barnets klassemetode er utført. Hoved () -funksjonen inneholder en enkel “::” -metode for å kalle både metodene ved hjelp av sine respektive klasser, i.e., “A” og “B”. La oss bare kjøre denne koden for å se hvordan den fungerer.

Når vi samlet koden, fikk vi unntaksfeilen som sa "kan ikke ringe medlemsfunksjon uten objekt" for begge funksjonssamtalene. Dette fordi vi ikke skapte objektene for å kalle funksjonene til respektive klasser og gjorde det direkte.

La oss bare åpne filen igjen ved å bruke “Nano Editor”. Det er ikke nødvendig å endre hele koden; Bare Main () -metoden krever litt modifisering. Som du kan se det, har vi laget en objekt OBJ1 i foreldreklassen “A” og brukt den til å gjøre en funksjonsanrop for å skrive ut () -metoden. Deretter opprettet vi et objekt “obj2” av barneklasse B og gjorde en funksjonsanrop for å fungere “show ()” her for å utføre det. Vi kan også unngå å gjøre foreldreklasseobjektet “OBJ1” og fremdeles kalle dens funksjon ved å bruke Child Class -objektet “OBJ2”. Begge funksjonene i foreldre- og barneklasser har forskjellige navn, så det vil ikke forårsake noen feil. La oss bare lagre kodefilen med Ctrl+S og komme tilbake til terminalen for å se om feilen er løst eller ikke.

Etter samlingen av oppdatert kode, kan vi ha et blikk på at feilen "ikke kan ringe medlemsfunksjonen uten dens objekt" er fjernet til slutt, og koden er klar til å bli utført. Både foreldre- og barneklassefunksjoner ble utført som vist ved kjøring av koden.

Konklusjon:

Denne artikkelen inneholder en enkel demonstrasjon av å lage en feil “kan ikke ringe medlemsfunksjon uten objektet” i C ++ -programmet. Vi har brukt konseptet med klasser her for å gjøre det mulig. Deretter har vi også demonstrert løsningen for å løse denne feilen innenfor eksemplene. Vi er ganske håpefulle at denne artikkelen vil være nyttig for alle C ++ naive brukere.