Kļūda “Cout ir neskaidra” programmā C++

Kluda Cout Ir Neskaidra Programma C



Šis raksts ir nobažījies par neskaidru kļūdu novēršanu C++ programmēšanas valodā. Neskaidra situācija rodas, ja kompilators nevar noteikt metodes vai operatorus, kas jāizmanto dažādiem uzdevumiem. Dažreiz mēs izmantojam vienu un to pašu parametru funkciju ar vienu un to pašu nosaukumvietu, un tad abos gadījumos tiek definēts cout. Kad mēs izpildām programmu, kompilators ģenerē cout neviennozīmīgu kļūdu, jo kompilators nesaprot, kādu nozīmi šis kods parāda. Cout neskaidrība rodas, ja programmā pastāv konflikts starp definētajām nosaukumvietām vai vairākām funkciju deklarācijām.

1. piemērs:

Šis ir neviennozīmīgas kļūdas piemērs, kas galvenokārt rodas C++ programmēšanā. Šeit mēs redzēsim, kā kompilators ģenerē neskaidras kļūdas cout, kad mēs izmantojam vairākas nosaukumvietas. Šī piemēra koda fragments ir minēts tālāk:







#include

nosaukumvieta klēpjdators {

nederīgs displejs ( ) {

std :: cout << 'šī ir klēpjdatora nosaukumvieta' << std :: endl ;

}

}

nosaukumvieta mobilais {

nederīgs displejs ( ) {


std :: cout << 'šī ir mobilā nosaukumvieta' << std :: endl ;

}

}

starpt galvenais ( ) {

izmantojot nosaukumvieta klēpjdators ;
izmantojot nosaukumvieta mobilais ;

displejs ( ) ;

atgriezties 0 ;


}

Šeit mēs paņēmām programmu ar divām nosaukumvietām, kas ir definētas atbilstoši mūsu vajadzībām. Mēs vēlamies parādīt virknes ekrānā. Šī koda izvade ir pievienota šādi:





Pēc koda izpildes tiek ģenerēta kļūda par neskaidru situāciju. Kļūda rodas tāpēc, ka kompilatoram nolasot kodu, kompilators nesaņem skaidru ievadi no lietotāja gala. Mēs savā kodā izmantojām vairākas nosaukumvietas deklarācijas. Visā kodā mēs izmantojām “displeja” metodi tikai, lai parādītu izvadi ekrānā. Kompilatoram nav ne jausmas, kura parādīšanas metode ir saistīta ar kuru nosaukumvietu. Mums ir jāpadara kods vienkāršs un skaidrs, lai kompilators viegli saprastu darbības, nepadarot kodu neskaidru.





Šīs kļūdas risinājums ir izsaukt metodi ar saistītu nosaukumvietu galvenajā funkcijā, lai kompilators varētu labāk izprast. Mēs skaidri norādām, kuru nosaukumvietas metodi vēlamies izsaukt mūsu galvenajā izpildes daļā.

#include

nosaukumvieta klēpjdators {

nederīgs displejs ( ) {


std :: cout << 'šī ir klēpjdatora nosaukumvieta' << std :: endl ;

}

}

nosaukumvieta mobilais {

nederīgs displejs ( ) {

std :: cout << 'šī ir mobilā nosaukumvieta' << std :: endl ;

}

}

starpt galvenais ( ) {

izmantojot nosaukumvieta klēpjdators ;
izmantojot nosaukumvieta mobilais ;
klēpjdators :: displejs ( ) ;
atgriezties 0 ;


}

Šeit mēs varam vienkārši saistīt displeja () metodi ar “klēpjdatora” nosaukumvietu galvenajā funkcijā, kā redzams iepriekšējā ekrānuzņēmumā. Tagad palaidiet programmu. Izvade tiek parādīta konsoles logā.



2. piemērs:

Šis scenārijs ir saistīts ar neviennozīmīgo kļūdu C++. Kompilators parāda kļūdu, ja tas nesaprot izpildes plūsmu. Šī piemēra koda fragments ir pievienots tālāk.

#include

nosaukumvieta Valoda {

nederīgs drukāt ( starpt i ) {

std :: cout << 'C valodas nosaukumvieta:' << i << std :: endl ;

}

}

nosaukumvieta java {

nederīgs drukāt ( starpt j ) {

std :: cout << 'Java valodas nosaukumvieta:' << j << std :: endl ;

}

}

izmantojot nosaukumvieta Valoda ;

izmantojot nosaukumvieta java ;

starpt galvenais ( ) {

drukāt ( 5 ) ;
atgriezties 0 ;


}

Šajā kodā mēs definējam visas nepieciešamās bibliotēkas galvenes. Mēs izveidojam divas nosaukumvietas dažādiem mērķiem. Nosaukumvietā “Clanguage” mēs definējam “drukāšanas” metodi, kas no lietotāja ņem vesela skaitļa vērtību. Funkcijā “Drukāt” mēs vēlamies parādīt vērtību, ko lietotājs nosūtījis konsoles ekrānā. Mēs parādām nepieciešamo izvadi, izmantojot mūsu koda straumi “cout”. Pēc tam mēs definējam citu nosaukumvietu, kuras nosaukums ir “Java”.

Šajā “Java” nosaukumvietā mēs atkal izmantojam “print” metodi, lai parādītu vērtību, ko lietotājs nodod, izmantojot “cout”. Mēs izsaucam abas nosaukumvietas izmantošanai mūsu galvenajā funkcijā, lai iegūtu vēlamo izvadi konsoles logā C++. Funkcijā “galvenā” mēs izsaucam “print()” pārslogotu funkciju, lai konsoles ekrānā parādītu nodoto vērtību.

Galvenajā izvēlnē noklikšķiniet uz opcijas “Izpildīt” un atlasiet opciju “Kompilēt un palaist”. Šī koda izpildes laikā rodas kļūda par neskaidrību. Kļūdas ekrānuzņēmums ir pievienots šādi:

Šī kļūda norāda, ka kompilators ir apmulsis par izsaukto pārslogoto print() funkciju. Šī kļūda ir 19. rindiņā “print (5)”. Kompilators ir neizpratnē par nosaukumvietu, kurai pieder šī pārslogotā funkcija. Iesācēji lielāko daļu laika vienmēr ir iestrēguši šāda veida kļūdās.

Atrisināsim šo kļūdu, kas patiesībā nav sarežģīta. Neskaidrās kļūdas ir viegli novērst. Lai nodrošinātu kompilatora redzamību un izpratni, funkcijā “galvenā” ir jānorāda nosaukumvieta gar pārslogoto funkciju. Tāpat kā šajā programmā, mēs pievienojam šo “java::print(5)” mūsu esošajam kodam, kā minēts tālāk:

#include

nosaukumvieta Valoda {

nederīgs drukāt ( starpt i ) {

std :: cout << 'C valodas nosaukumvieta:' << i << std :: endl ;

}

}

nosaukumvieta java {

nederīgs drukāt ( starpt j ) {

std :: cout << 'Java valodas nosaukumvieta:' << j << std :: endl ;

}

}

izmantojot nosaukumvieta Valoda ;

izmantojot nosaukumvieta java ;

starpt galvenais ( ) {

java :: drukāt ( 5 ) ;
atgriezties 0 ;


}

Tagad programma tiek izpildīta nevainojami bez jebkādām neskaidrām kļūdām un parāda izvadi konsoles ekrānā. Šīs programmas izvade ir pievienota šādi:

3. piemērs:

Šis ir pēdējais un pēdējais piemērs, kas saistīts ar kļūdu, kas ģenerēta neskaidras problēmas dēļ. Kompilators nevar iegūt pareizo rezultātu. Lai lietotājs labāk saprastu, šī piemēra koda fragments ir pievienots tālāk.

Šeit mēs definējam vajadzīgās bibliotēkas. Pēc tam mēs definējam nosaukumvietu, kurā ir klase, kurā konsoles logā vēlamies parādīt virkni. Mēs saucam šo definēto nosaukumvietu funkcijā “galvenā” ar mainīgo “c”. Pēc tam mēs izsaucam print() metodi, izmantojot nosaukumvietas objektu. Pēc metodes izsaukšanas mēs atkal parādām virkni konsoles ekrānā. Izvadei ir jābūt abām virknēm, un tā tiek parādīta konsoles ekrānā. Kad mēs izpildām šo kodu, rodas kļūda, kā parādīts tālāk.

#include

izmantojot nosaukumvieta std ;

nosaukumvieta myNamespace {

klasē cout {
publiski :
nederīgs drukāt ( ) {


cout << 'Pielāgots modelis' << std :: endl ;

}

} ;

}

starpt galvenais ( ) {

myNamespace :: cout c ;
c. drukāt ( ) ;


cout << 'Sveika pasaule!' << std :: endl ;

atgriezties 0 ;

}

Kompilators neizvēlējās cout paziņojumu, kas parāda datus konsoles ekrānā. Kompilators nevar saprast nosaukumvietu, kas pieder paziņojumam cout, un ģenerē kļūdu. Šīs kļūdas risinājums ir pievienot nosaukumvietas objektu ar paziņojumu cout kompilatora lasāmībai un izpratnei. Pievienojiet “std::” gar priekšrakstu cout un palaidiet kodu. Konsoles ekrānā tiek parādīta šāda izvade:

Secinājums

Šeit mēs varam teikt, ka izvades parādīšana konsoles ekrānā rada arī kļūdu, kas nav ne sintakses, ne loģiska kļūda. Lielāko daļu laika lietotājs raksta labu kodu, taču tas nav saprotams kompilatoram. Kompilators ir neskaidrs par ievadi. Tātad, noskaidrojiet katru koda darbību ar pareizu nosaukumiem un sintaksi, lai izvairītos no kļūdām C++ programmēšanas valodā. Šīs problēmas risināšanas darbības ir precīzo kvalifikatoru izmantošana, nosaukumvietas sadursmju novēršana un nodrošināšana, ka paredzētās funkcijas vai objekti identificē šīs problēmas risināšanas darbības.