Hva er omdefinisjonen av klassen i C ++ og hvordan du fikser det?

Hva er omdefinisjonen av klassen i C ++ og hvordan du fikser det?

Når en programmerer prøver å definere en klasse med samme navn som en som allerede eksisterer, er den kjent som “Redefinisjon av klasse”. Programmet kan oppføre seg uventet som et resultat av dette, siden det ikke vil være klart hvilken klasse som kalles, noe som kan forårsake kompileringsproblemer.

Årsaker til omdefinering av klasser

For å sikre at programvaren kjører uten feil, er det avgjørende å forstå hva som utløser klasseringsdefinisjoner og hvordan du kan løse dem.

1: Samme klasse definert mer enn en gang

Når en klasse blir erklært mer enn en gang i en kildefil eller overskriftsfil, må den omdefineres. Flere definisjoner av samme klasse er resultatet av dette, noe som gjør det vanskelig for kompilatoren å velge hvilken definisjon du skal bruke. Når du prøver å koble objektfiler, kan dette føre til kompilasjonsproblemer som “Duplikat symbol” eller linkerfeil.

2: omdefinere samme klasse med lignende kommandoer og verdier

Fordi programmerere vanligvis omdefinerer den samme klassen med lignende kommandoer og verdier, omdefinere klasse C ++ feil oppstår. Som et resultat kan ikke systemet skille mellom de to skriptene, noe som fører til omdefinering av variabler i mange linjer med C ++ -kode.

3: Å bygge en klasse på tvers av mange filer

Utviklere kan også få problemer. For eksempel, siden systemet gjenkjenner sine modifikasjoner, må C ++ ledeteksten for omdefinisjonskonstruktøren inneholde særegne verdier og tagger.

La oss grave i omdefinering av klassefeil i et C ++ -program, som vises nedenfor:

#inkludere
ved hjelp av navneområdet STD;
Klasseklasse1
offentlig:
int -data;
void func ()
cout << "Hello from Func!" << endl;

;
Klasseklasse1
offentlig:
int -data;
void func ()
cout << "Hello again from Func!" << endl;

;
int main ()
Klasse1 OBJ;
obj.Data = 50;
obj.Func ();
retur 0;

I koden ovenfor får vi feilen 'Redefinisjon av klasse klasse1'. I følge denne feilmeldingen prøver vi å omdefinere klassen Klasse1 ved å bruke samme navn, den samme samlingen av datamedlemmer, og samme sett med medlemsfunksjoner.

Produksjon

For å overvinne omdefinering av klasse i C ++, må du fjerne en klasse med samme navn eller gi den et annet navn.

Korrigert kode

Her har vi fjernet klassen med samme navn for å få ønsket utgang på konsollen.

#inkludere
ved hjelp av navneområdet STD;
Klasseklasse1
offentlig:
int -data;
void func ()
cout << "Hello from Func!" << endl;

;
int main ()
Klasse1 OBJ;
obj.Data = 50;
obj.Func ();
retur 0;

Klassen Klasse1 er definert av koden, som også inkluderer medlemsfunksjonene func og data (). Programmet oppretter et objekt av type klasse1, angir dataens verdi og påkaller FUNC () -metoden.

Produksjon

Hvordan fikse "omdefinering av klasse" -feil

For å fikse Redefinisjon av klassen I C ++ kan noen tilnærminger brukes.

1: Identifiser hvor klassen omdefineres

Å finne områdene der klassen omdefineres er det første trinnet. For å gjøre dette, søk etter klassenavnet i programkoden. Programmereren kan velge hvordan du tar opp problemet når problemets plassering er bestemt. Å gi nytt med klassen med et særegent suffiks eller prefiks er en tilnærming til problemet. Et annet alternativ er å kombinere de to klassene i en enkelt klasse som har et enkelt navn og inneholder alle funksjoner i de to originale klassene.

2: Gjør endringer i programkoden

Programmereren må endre programkoden for å bruke middelet. Dette kan innebære å gi nytt navn til klassen, oppdatere alle programreferanser til klassen og erstatte enhver kode som var unik for den opprinnelige klassen. Programvaren skal testes når modifikasjonene er gjort for å sikre at den fungerer ordentlig.

3: Bruk toppvakter

Å bruke overskriftsvakter er en annen foretrukket metode for å forhindre at overskriftsfiler blir inkludert mer enn en gang i en enkelt fil eller applikasjon. Overskriftsvakter er forbehandlerdirektiver som garanterer at overskriftsfilen bare er inkludert en gang, uansett hvor ofte den vises i kildekoden.

4: Bruk eksternt nøkkelord

En annen strategi er å erklære klassen i en overskriftsfil og definere den i en enkelt kildefil ved hjelp av eksternt nøkkelord. Som et resultat unngås omdefineringsfeil fordi det bare er en definisjon av klassen.

5: Bruke navneområder

Å bruke navneområder er en annen løsning på omdefinere klasse Feil i c++. Bruken av navneområder gjør det mulig for programmerere å forene lignende klasser og metoder under et enkelt navn. Ved å gjøre det reduseres navnekonflikter, og riktig klasse kalles. Programmereren kan forhindre navnekonflikter ved å erklære hver klasse i et unikt navneområde.

Konklusjon

De omdefinering av en klasse I C ++ er programmering en hyppig feil som lett kan unngås ved å identifisere klassen, gjøre endringer i koden, bruke toppvakter, det eksterne søkeordet og navnefeltet. Disse tilnærmingene hjelper til med å garantere at klassen har en enkelt definisjon, og unngår samling og kobler problemer.