Napaka »Cout je dvoumen« v C++

Napaka Cout Je Dvoumen V C



Ta članek obravnava dvoumne napake cout v programskem jeziku C++. Dvoumna situacija se pojavi, ko prevajalnik ne more določiti metod ali operatorjev, ki jih je treba uporabiti pri različnih nalogah. Včasih uporabimo isto funkcijo parametra z istim imenskim prostorom in potem je cout definiran v obeh primerih. Ko izvajamo program, prevajalnik ustvari dvoumno napako cout, ker prevajalnik ne razume, kateri pomen prikazuje ta koda. Dvoumnost cout se pojavi, ko obstaja konflikt med definiranimi imenskimi prostori ali več deklaracijami funkcij znotraj programa.

Primer 1:

To je primer dvoumne napake cout, ki se večinoma pojavi pri programiranju C++. Tukaj bomo videli, kako prevajalnik generira dvoumne napake na cout, ko uporabljamo več imenskih prostorov. Delček kode tega primera je omenjen v naslednjem:







#include

imenski prostor prenosnik {

praznina zaslon ( ) {

std :: cout << 'to je imenski prostor prenosnika' << std :: konec ;

}

}

imenski prostor mobilni {

praznina zaslon ( ) {


std :: cout << 'to je mobilni imenski prostor' << std :: konec ;

}

}

int glavni ( ) {

uporabo imenski prostor prenosnik ;
uporabo imenski prostor mobilni ;

zaslon ( ) ;

vrnitev 0 ;


}

Tu smo vzeli program z dvema imenskima prostoroma, ki sta definirana glede na naše potrebe. Nize želimo prikazati na zaslonu. Izhod te kode je priložen v naslednjem:





Pri izvajanju kode se generira napaka o dvoumni situaciji. Napaka se ustvari, ker ko prevajalnik prebere kodo, prevajalnik ne dobi jasnega vnosa od uporabnika. V naši kodi smo uporabili več deklaracij imenskega prostora. V celotni kodi smo uporabili metodo »display« izključno za prikaz izhoda na zaslonu. Prevajalnik nima pojma, katera metoda prikaza je povezana s katerim imenskim prostorom. Koda mora biti preprosta in jasna, tako da prevajalnik zlahka razume korake, ne da bi bila koda dvoumna.





Rešitev te napake je, da pokličete metodo s sorodnim imenskim prostorom v glavni funkciji, da prevajalnik bolje razume. Jasno določimo, katero metodo imenskega prostora želimo poklicati v našem glavnem delu izvajanja.

#include

imenski prostor prenosnik {

praznina zaslon ( ) {


std :: cout << 'to je imenski prostor prenosnika' << std :: konec ;

}

}

imenski prostor mobilni {

praznina zaslon ( ) {

std :: cout << 'to je mobilni imenski prostor' << std :: konec ;

}

}

int glavni ( ) {

uporabo imenski prostor prenosnik ;
uporabo imenski prostor mobilni ;
prenosnik :: zaslon ( ) ;
vrnitev 0 ;


}

Tukaj lahko preprosto povežemo metodo display() z imenskim prostorom »prenosni računalnik« v glavni funkciji, kot je prikazano na prejšnjem posnetku zaslona. Zdaj zaženite program. Izhod je prikazan v oknu konzole.



Primer 2:

Ta scenarij je povezan z dvoumno napako cout v C++. Prevajalnik prikaže napako, ko ne razume toka izvajanja. Delček kode tega primera je priložen v nadaljevanju:

#include

imenski prostor Jezik {

praznina tiskanje ( int jaz ) {

std :: cout << 'Imenski prostor jezika C: ' << jaz << std :: konec ;

}

}

imenski prostor java {

praznina tiskanje ( int j ) {

std :: cout << 'Imenski prostor jezika java: ' << j << std :: konec ;

}

}

uporabo imenski prostor Jezik ;

uporabo imenski prostor java ;

int glavni ( ) {

tiskanje ( 5 ) ;
vrnitev 0 ;


}

V tej kodi definiramo vse zahtevane glave knjižnice. Ustvarimo dva imenska prostora za različne namene. V imenskem prostoru »Clanguage« definiramo metodo »print«, ki od uporabnika vzame vrednost celega števila. V funkciji »print« želimo prikazati vrednost, ki jo je uporabnik posredoval na zaslonu konzole. Zahtevani izhod prikažemo z uporabo toka »cout« v naši kodi. Po tem definiramo drug imenski prostor, katerega ime je 'Java'.

V tem imenskem prostoru »Java« ponovno uporabimo metodo »print« za prikaz vrednosti, ki jo uporabnik posreduje z uporabo »cout«. Oba imenska prostora pokličemo za uporabo v naši glavni funkciji, da dobimo želeni rezultat v oknu konzole v C++. V funkciji »main« pokličemo preobremenjeno funkcijo »print()«, da prikažemo posredovano vrednost na zaslonu konzole.

V glavnem meniju kliknite možnost »izvedi« in izberite možnost »prevedi in zaženi«. Napaka o dvoumnosti se pojavi pri izvajanju te kode. Posnetek zaslona z napako je priložen na naslednji način:

Ta napaka nakazuje, da je prevajalnik zmeden glede preobremenjene klicane funkcije print(). Ta napaka je v vrstici 19, »print (5)«. Prevajalnik je zmeden glede imenskega prostora, ki mu pripada ta preobremenjena funkcija. Začetniki se večino časa vedno znajdejo v tovrstnih napakah.

Razrešimo to napako, ki v resnici ni zapletena. Dvoumne napake se zlahka odpravijo. Določiti moramo imenski prostor vzdolž preobremenjene funkcije v 'glavni' funkciji za vidnost in razumevanje prevajalnika. Tako kot v tem programu dodamo ta »java::print(5)« v našo obstoječo kodo, kot je navedeno v naslednjem:

#include

imenski prostor Jezik {

praznina tiskanje ( int jaz ) {

std :: cout << 'Imenski prostor jezika C: ' << jaz << std :: konec ;

}

}

imenski prostor java {

praznina tiskanje ( int j ) {

std :: cout << 'Imenski prostor jezika java: ' << j << std :: konec ;

}

}

uporabo imenski prostor Jezik ;

uporabo imenski prostor java ;

int glavni ( ) {

java :: tiskanje ( 5 ) ;
vrnitev 0 ;


}

Zdaj se program izvaja popolnoma brez kakršne koli dvoumne napake in prikaže izhod na zaslonu konzole. Izhod tega programa je priložen v naslednjem:

Primer 3:

To je zadnji in zadnji primer, povezan z napako, ki se ustvari zaradi dvoumne težave. Prevajalnik ne more dobiti pravilnega rezultata. Delček kode tega primera je priložen v nadaljevanju za boljše razumevanje uporabnika:

Tukaj definiramo zahtevane knjižnice. Za tem definiramo imenski prostor, ki vsebuje razred, v katerem želimo prikazati niz v oknu konzole. Ta definirani imenski prostor imenujemo v 'main' funkciji s spremenljivko 'c'. Po tem pokličemo metodo print() z uporabo objekta imenskega prostora. Niz znova prikažemo na zaslonu konzole po klicu metode. Izhod morata biti oba niza in sta prikazana na zaslonu konzole. Ko izvedemo to kodo, se pojavi napaka, kot je prikazano v naslednjem:

#include

uporabo imenski prostor std ;

imenski prostor myNamespace {

razred cout {
javnosti :
praznina tiskanje ( ) {


cout << 'Cout po meri' << std :: konec ;

}

} ;

}

int glavni ( ) {

myNamespace :: cout c ;
c. tiskanje ( ) ;


cout << 'Pozdravljen, svet!' << std :: konec ;

vrnitev 0 ;

}

Prevajalnik ni izbral stavka cout, ki prikazuje podatke na zaslonu konzole. Prevajalnik ne more razumeti imenskega prostora, ki pripada stavku cout, in ustvari napako. Rešitev te napake je dodati objekt imenskega prostora s stavkom cout za berljivost in razumevanje prevajalnika. Dodajte »std::« vzdolž stavka cout in zaženite kodo. Na zaslonu konzole je prikazan naslednji izhod:

Zaključek

Tukaj lahko rečemo, da prikaz izhoda na zaslonu konzole prav tako ustvari napako, ki ni sintaksna ali logična napaka. Večino časa uporabnik napiše kodo z dobrim občutkom, ki pa prevajalniku ni razumljiva. Prevajalnik je dvoumen glede vnosa. Zato razjasnite vsak korak kode z ustreznim imenskim prostorom in sintakso, da se izognete napakam v programskem jeziku C++. Koraki, vključeni v reševanje te težave, so uporaba eksplicitnih kvalifikatorjev, preprečevanje sporov imenskega prostora in zagotavljanje, da predvidene funkcije ali objekti identificirajo korake, vključene v rešitev te težave.