'Cout er tvetydig' fejl i C++

Cout Er Tvetydig Fejl I C



Denne artikel er bekymret over cout tvetydige fejl i C++ programmeringssproget. Den tvetydige situation opstår, når compileren ikke kan bestemme de metoder eller operatører, der skal bruges på forskellige opgaver. Nogle gange bruger vi den samme parameterfunktion med det samme navneområde, og så er cout defineret i begge tilfælde. Når vi udfører programmet, genererer compileren cout tvetydig fejl, fordi compileren ikke forstår, hvilken betydning denne kode viser. Cout-tvetydigheden opstår, når der er en konflikt mellem de definerede navnerum eller flere erklæringer af funktioner inde i programmet.

Eksempel 1:

Dette er et eksempel på en cout tvetydig fejl, der for det meste opstår i C++ programmering. Her vil vi se, hvordan compileren genererer de tvetydige fejl på cout, når vi bruger flere navnerum. Kodestykket i dette eksempel er nævnt i det følgende:







#include

navneområde bærbar {

ugyldig Skærm ( ) {

std :: cout << 'dette er bærbar navneområde' << std :: endl ;

}

}

navneområde mobil {

ugyldig Skærm ( ) {


std :: cout << 'dette er mobilt navneområde' << std :: endl ;

}

}

int vigtigste ( ) {

ved brug af navneområde bærbar ;
ved brug af navneområde mobil ;

Skærm ( ) ;

Vend tilbage 0 ;


}

Her tog vi et program med to navneområder, der er defineret efter vores behov. Vi ønsker at vise strengene på skærmen. Outputtet af denne kode er vedhæftet i følgende:





Ved kodeeksekvering genereres fejlen om cout tvetydig situation. Fejlen genereres, fordi når compileren læser koden, får compileren ikke et klart input fra brugerens ende. Vi brugte flere navneområdeerklæringer i vores kode. I hele koden brugte vi 'display' metoden udelukkende til at vise outputtet på skærmen. Compileren har ingen idé om, hvilken visningsmetode der er relateret til hvilket navneområde. Vi skal gøre koden enkel og overskuelig, så compileren nemt forstår trinene uden at gøre koden tvetydig.





Løsningen på denne fejl er at kalde metoden med et relateret navneområde i hovedfunktionen for at compileren kan få mere forståelse. Vi specificerer tydeligt, hvilken metode for navneområde vi ønsker at kalde i vores hovedudførelsesdel.

#include

navneområde bærbar {

ugyldig Skærm ( ) {


std :: cout << 'dette er bærbar navneområde' << std :: endl ;

}

}

navneområde mobil {

ugyldig Skærm ( ) {

std :: cout << 'dette er mobilt navneområde' << std :: endl ;

}

}

int vigtigste ( ) {

ved brug af navneområde bærbar ;
ved brug af navneområde mobil ;
bærbar :: Skærm ( ) ;
Vend tilbage 0 ;


}

Her kan vi bare forbinde display()-metoden med 'laptop'-navnerummet i hovedfunktionen som set i det forrige skærmbillede. Kør nu programmet. Outputtet vises i konsolvinduet.



Eksempel 2:

Dette scenarie er relateret til cout tvetydige fejl i C++. Compileren viser en fejl, når den ikke forstår udførelsesforløbet. Kodestykket til dette eksempel er vedhæftet i følgende:

#include

navneområde Sprog {

ugyldig Print ( int jeg ) {

std :: cout << 'Navneområde for C-sprog: ' << jeg << std :: endl ;

}

}

navneområde java {

ugyldig Print ( int j ) {

std :: cout << 'Navneområde for java sprog: ' << j << std :: endl ;

}

}

ved brug af navneområde Sprog ;

ved brug af navneområde java ;

int vigtigste ( ) {

Print ( 5 ) ;
Vend tilbage 0 ;


}

I denne kode definerer vi alle de nødvendige biblioteksoverskrifter. Vi opretter to navnerum til forskellige formål. I 'Clanguage'-navnerummet definerer vi en 'print'-metode, der tager heltalsværdien fra brugeren. I 'print'-funktionen ønsker vi at vise den værdi, som brugeren har givet på konsolskærmen. Vi viser det nødvendige output ved hjælp af 'cout'-strømmen i vores kode. Derefter definerer vi et andet navneområde, hvis navn er 'Java'.

I dette 'Java'-navneområde bruger vi 'print'-metoden igen for at vise den værdi, som brugeren sender ved hjælp af 'cout'. Vi kalder begge navneområder til brug i vores hovedfunktion for at få det ønskede output på konsolvinduet i C++. I 'hoved'-funktionen kalder vi 'print()'-overbelastet funktion for at vise den beståede værdi på konsolskærmen.

Klik på 'udfør' i hovedmenuen, og vælg 'kompiler og kør'. Fejlen om tvetydighed opstår ved denne kodeudførelse. Fejlskærmbilledet er vedhæftet som følger:

Denne fejl indikerer, at compileren er forvirret over den overbelastede print() funktion, der kaldes. Denne fejl er på linje 19,  'print (5)'. Compileren er forvirret over det navneområde, som denne overbelastede funktion tilhører. Begyndere sidder altid fast i disse typer fejl det meste af tiden.

Lad os løse denne fejl, som ikke er kompleks i virkeligheden. De tvetydige fejl løses nemt. Vi skal specificere navneområdet langs den overbelastede funktion i 'hoved'-funktionen for compiler synlighed og forståelse. Som i dette program tilføjer vi denne 'java::print(5)' i vores eksisterende kode som nævnt i det følgende:

#include

navneområde Sprog {

ugyldig Print ( int jeg ) {

std :: cout << 'Navneområde for C-sprog: ' << jeg << std :: endl ;

}

}

navneområde java {

ugyldig Print ( int j ) {

std :: cout << 'Navneområde for java sprog: ' << j << std :: endl ;

}

}

ved brug af navneområde Sprog ;

ved brug af navneområde java ;

int vigtigste ( ) {

java :: Print ( 5 ) ;
Vend tilbage 0 ;


}

Nu udføres programmet perfekt uden nogen tvetydig fejl og viser outputtet på konsolskærmen. Resultatet af dette program er vedhæftet i følgende:

Eksempel 3:

Dette er det sidste og sidste eksempel relateret til en fejl, der er genereret på grund af et tvetydigt problem. Compileren kan ikke få det korrekte resultat. Kodestykket i dette eksempel er vedhæftet i det følgende for at give brugeren en bedre forståelse:

Her definerer vi de nødvendige biblioteker. Derefter definerer vi et navneområde, der indeholder den klasse, hvori vi ønsker at vise strengen på konsolvinduet. Vi kalder dette definerede navneområde i 'main'-funktionen med 'c'-variablen. Derefter kalder vi print()-metoden ved hjælp af et navneområdeobjekt. Vi viser strengen igen på konsolskærmen efter metodekaldet. Outputtet skal være begge strenge og vises på konsolskærmen. Når vi udfører denne kode, opstår fejlen som vist i følgende:

#include

ved brug af navneområde std ;

navneområde mit navneområde {

klasse cout {
offentlig :
ugyldig Print ( ) {


cout << 'Tilpasset udformning' << std :: endl ;

}

} ;

}

int vigtigste ( ) {

mit navneområde :: cout c ;
c. Print ( ) ;


cout << 'Hej Verden!' << std :: endl ;

Vend tilbage 0 ;

}

Compileren valgte ikke cout-sætningen, der viser dataene på konsolskærmen. Compileren kan ikke forstå det navneområde, der hører til cout-sætningen og genererer en fejl. Løsningen på denne fejl er at tilføje et navneområdeobjekt med en cout-sætning for compilerens læsbarhed og forståelse. Tilføj 'std::' langs cout-sætningen og kør koden. Følgende output vises på konsolskærmen:

Konklusion

Her kan vi sige, at visning af et output på konsolskærmen også genererer en fejl, der ikke er en syntaksfejl eller en logisk fejl. Det meste af tiden skriver brugeren en god fornemmelse af kode, men det er ikke forståeligt for compileren. Compileren er tvetydig med hensyn til input. Så afklar hvert kodetrin med korrekt navnemellemrum og syntaks for at undgå fejl i C++ programmeringssproget. De trin, der er involveret i at løse dette problem, er at bruge eksplicitte kvalifikationer, forhindre navneområdesammenstød og sikre, at de tilsigtede funktioner eller objekter identificerede de trin, der er involveret i at løse dette problem.