Error na 'Malalabo ang Cout' sa C++

Error Na Malalabo Ang Cout Sa C



Ang artikulong ito ay nag-aalala tungkol sa mga cout ambiguous error sa C++ programming language. Lumilitaw ang hindi maliwanag na sitwasyon kapag hindi matukoy ng compiler ang mga pamamaraan o operator na gagamitin sa iba't ibang gawain. Minsan, ginagamit namin ang parehong function ng parameter na may parehong namespace, at pagkatapos ay tinukoy ang cout sa parehong mga kaso. Kapag naisakatuparan namin ang program, ang compiler ay bumubuo ng cout ambiguous error dahil hindi naiintindihan ng compiler kung aling kahulugan ang ipinapakita ng code na ito. Lumilitaw ang kalabuan ng cout kapag may umiiral na salungatan sa pagitan ng tinukoy na mga namespace o maraming deklarasyon ng mga function sa loob ng programa.

Halimbawa 1:

Ito ay isang halimbawa ng cout ambiguous error na kadalasang nangyayari sa C++ programming. Dito, makikita natin kung paano nabubuo ng compiler ang hindi malinaw na mga error sa cout kapag gumagamit tayo ng maraming namespace. Ang code snippet ng halimbawang ito ay binanggit sa sumusunod:







#include

namespace laptop {

walang bisa display ( ) {

std :: cout << 'Ito ang laptop Namespace' << std :: endl ;

}

}

namespace mobile {

walang bisa display ( ) {


std :: cout << 'ito ang mobile Namespace' << std :: endl ;

}

}

int pangunahing ( ) {

gamit namespace laptop ;
gamit namespace mobile ;

display ( ) ;

bumalik 0 ;


}

Dito, kumuha kami ng isang programa na may dalawang namespace na tinukoy ayon sa aming pangangailangan. Gusto naming ipakita ang mga string sa screen. Ang output ng code na ito ay nakalakip sa sumusunod:





Sa pagpapatupad ng code, nabuo ang error tungkol sa hindi maliwanag na sitwasyon ng cout. Ang error ay nabuo dahil kapag binasa ng compiler ang code, ang compiler ay hindi nakakakuha ng malinaw na input mula sa user end. Gumamit kami ng maraming deklarasyon ng namespace sa aming code. Sa buong code, ginamit namin ang 'display' na paraan para lang ipakita ang output sa screen. Walang ideya ang compiler kung aling paraan ng pagpapakita ang nauugnay sa kung aling namespace. Kailangan nating gawing simple at malinaw ang code upang madaling maunawaan ng compiler ang mga hakbang nang hindi ginagawang malabo ang code.





Ang solusyon sa error na ito ay tawagan ang pamamaraan na may kaugnay na namespace sa pangunahing function para sa compiler na magkaroon ng higit na pang-unawa. Malinaw naming tinukoy kung aling paraan ng namespace ang gusto naming tawagan sa aming pangunahing bahagi ng pagpapatupad.

#include

namespace laptop {

walang bisa display ( ) {


std :: cout << 'Ito ang laptop Namespace' << std :: endl ;

}

}

namespace mobile {

walang bisa display ( ) {

std :: cout << 'ito ang mobile Namespace' << std :: endl ;

}

}

int pangunahing ( ) {

gamit namespace laptop ;
gamit namespace mobile ;
laptop :: display ( ) ;
bumalik 0 ;


}

Dito, maaari lang nating i-link ang display() na paraan sa 'laptop' na namespace sa pangunahing function tulad ng nakikita sa nakaraang screenshot. Ngayon, patakbuhin ang programa. Ang output ay ipinapakita sa console window.



Halimbawa 2:

Ang scenario na ito ay nauugnay sa cout ambiguous error sa C++. Nagpapakita ang compiler ng error kapag hindi nito naiintindihan ang daloy ng pagpapatupad. Ang code snippet ng halimbawang ito ay naka-attach sa sumusunod:

#include

namespace Clanguage {

walang bisa print ( int i ) {

std :: cout << 'Namespace ng wikang C: ' << i << std :: endl ;

}

}

namespace java {

walang bisa print ( int j ) {

std :: cout << 'Namespace ng java language: ' << j << std :: endl ;

}

}

gamit namespace Clanguage ;

gamit namespace java ;

int pangunahing ( ) {

print ( 5 ) ;
bumalik 0 ;


}

Sa code na ito, tinukoy namin ang lahat ng kinakailangang header ng library. Gumagawa kami ng dalawang namespace para sa magkaibang layunin. Sa 'Clanguage' namespace, tinutukoy namin ang isang 'print' na paraan na kumukuha ng integer value mula sa user. Sa function na 'print', gusto naming ipakita ang value na ipinasa ng user sa console screen. Ipinapakita namin ang kinakailangang output gamit ang 'cout' stream sa aming code. Pagkatapos nito, tinukoy namin ang isa pang namespace na ang pangalan ay 'Java'.

Sa 'Java' namespace na ito, muli naming ginagamit ang 'print' na paraan upang ipakita ang halaga na ipinapasa ng user gamit ang 'cout'. Tinatawag namin ang parehong mga namespace para sa paggamit sa aming pangunahing function upang makuha ang nais na output sa console window sa C++. Sa 'pangunahing' function, tinatawag namin ang 'print()'overloaded na function upang ipakita ang naipasa na halaga sa console screen.

Mag-click sa opsyong “execute” mula sa pangunahing menu at piliin ang opsyong “compile at run”. Ang error tungkol sa kalabuan ay nangyayari sa code execution na ito. Ang screenshot ng error ay naka-attach tulad ng sumusunod:

Ang error na ito ay nagpapahiwatig na ang compiler ay nalilito tungkol sa overloaded print() function na tinatawag. Ang error na ito ay nasa linya 19,  “print (5)”. Ang compiler ay nalilito tungkol sa namespace kung saan kabilang ang overloaded na function na ito. Ang mga nagsisimula ay palaging natigil sa mga ganitong uri ng mga error sa halos lahat ng oras.

Resolbahin natin ang error na ito na hindi naman kumplikado sa aktwal. Ang hindi maliwanag na mga pagkakamali ay madaling malutas. Dapat nating tukuyin ang namespace kasama ang overloaded na function sa 'pangunahing' function para sa visibility at pag-unawa ng compiler. Tulad ng sa program na ito, idinaragdag namin itong 'java::print(5)' sa aming umiiral na code gaya ng nabanggit sa sumusunod:

#include

namespace Clanguage {

walang bisa print ( int i ) {

std :: cout << 'Namespace ng wikang C: ' << i << std :: endl ;

}

}

namespace java {

walang bisa print ( int j ) {

std :: cout << 'Namespace ng java language: ' << j << std :: endl ;

}

}

gamit namespace Clanguage ;

gamit namespace java ;

int pangunahing ( ) {

java :: print ( 5 ) ;
bumalik 0 ;


}

Ngayon, ang programa ay ganap na naisakatuparan nang walang anumang cout na hindi maliwanag na error at ipinapakita ang output sa console screen. Ang output ng program na ito ay nakalakip sa sumusunod:

Halimbawa 3:

Ito ang pangwakas at huling halimbawa na nauugnay sa isang error na nabuo dahil sa isang hindi maliwanag na problema. Hindi makuha ng compiler ang tamang resulta. Ang code snippet ng halimbawang ito ay naka-attach sa sumusunod para sa mas mahusay na pag-unawa ng user:

Dito, tinutukoy namin ang mga kinakailangang aklatan. Pagkatapos nito, tinukoy namin ang isang namespace na naglalaman ng klase kung saan gusto naming ipakita ang string sa console window. Tinatawag namin itong tinukoy na namespace sa 'pangunahing' function na may variable na 'c'. Pagkatapos nito, tinatawag namin ang print() na paraan gamit ang isang namespace object. Muli naming ipinapakita ang string sa console screen pagkatapos ng method call. Ang output ay dapat na parehong mga string at ipinapakita sa console screen. Kapag isinagawa namin ang code na ito, nangyayari ang error tulad ng ipinapakita sa sumusunod:

#include

gamit namespace std ;

namespace myNamespace {

klase cout {
pampubliko :
walang bisa print ( ) {


cout << 'Pasadyang cout' << std :: endl ;

}

} ;

}

int pangunahing ( ) {

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


cout << 'Hello, Mundo!' << std :: endl ;

bumalik 0 ;

}

Hindi pinili ng compiler ang cout statement na nagpapakita ng data sa console screen. Hindi maintindihan ng compiler ang namespace na kabilang sa cout statement at bumubuo ng error. Ang solusyon sa error na ito ay magdagdag ng namespace object na may cout statement para sa compiler readability at understanding. Magdagdag ng 'std::' kasama ang cout statement at patakbuhin ang code. Ang sumusunod na output ay ipinapakita sa console screen:

Konklusyon

Dito, maaari nating sabihin na ang pagpapakita ng isang output sa console screen ay bumubuo rin ng isang error na hindi isang syntax error o isang lohikal na error. Kadalasan, ang user ay nagsusulat ng isang mahusay na kahulugan ng code, ngunit hindi ito naiintindihan para sa compiler. Ang compiler ay hindi maliwanag tungkol sa input. Kaya, linawin ang bawat hakbang ng code gamit ang wastong namespace at syntax upang maiwasan ang mga error sa C++ programming language. Ang mga hakbang na kasangkot sa paglutas ng problemang ito ay ang paggamit ng mga tahasang qualifier, pagpigil sa mga pag-aaway ng namespace, at pagtiyak na ang mga nilalayong function o bagay ay natukoy ang mga hakbang na kasangkot sa paglutas ng problemang ito.