Namespace c++.

Moderators: jkien, Xilvo

Reageer
Berichten: 2.589

Namespace c++.

Als ik in dev een c++ source file aanmaak (geen project want dan werkt het wel), en dan volgende compileer:

Code: Selecteer alles

 #include <iostream>

int main() {

char x; 

cout << "max";

cin >> x; 

return 0;

}


Krijg ik telkens een foutmelding.

Als ik nu:

Code: Selecteer alles

#include <iostream>

using namespace std; 

int main() {

char x; 

cout << "max";

cin >> x; 

return 0;

}
compileer (opnieuw in een gewoon c++ bestand) dan werkt het plots wel.

Kan mij iemand de precisie functie van die using namespace std; uitleggen? Waarom werkt het één wel en het ander niet? Groeten.


Gebruikersavatar
Berichten: 5.679

Re: Namespace c++.

Kan het zijn dat als je die file in een project compileert, dat jouw compiler dan in een "oudere mode" ofzoiets zit? Staan er misschien nog bepaalde flags aan of uit in dat project?

Want die cin cout zooi zit tegenwoordig in een namespace std, en dus kent ie dat niet zomaar meer.

Zie ook: http://www.gotw.ca/publications/migrating_to_namespaces.htm
In theory, there's no difference between theory and practice. In practice, there is.

Berichten: 2.589

Re: Namespace c++.

oké bedankt. Dus een soort import van een hoop zaken? Ik weet niet percies wat die compiler doet, het is dev c++ 4.9.9.2

Gebruikersavatar
Berichten: 4.810

Re: Namespace c++.

Het is idd gewoon een 'link' voor je compiler zodat hij weet wat hij moet doen met verschillende commando's zoals cin, cout...

Berichten: 2.589

Re: Namespace c++.

Hoe is het dan te vergelijken met package in java?

Gebruikersavatar
Lorentziaan
Berichten: 5.079

Re: Namespace c++.

Hoe is het dan te vergelijken met package in java?
Ik denk van wel, daar lijkt het tenminste op als ik het artikel lees. Maar de details zijn anders. Zie Wikipedia. (More about C++)
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs

Berichten: 2.589

Re: Namespace c++.

Begrijp het, het is eigenlijk een linkje om te vermijden dat je telkens de volledige naam zou moeten typen. en dat binnen een soort werkruimte.

Gebruikersavatar
Lorentziaan
Berichten: 5.079

Re: Namespace c++.

Het is meer een definitie van context.

Als de parser een functie/methode aanroep tegenkomt zoekt het in de context naar een passende definitie.

Door een namespace of package toe te voegen aan de context zorg je er voor dat je ze zonder de volledige naam kunt gebruiken, de parser kan ze namelijk vinden in de context.
Any sufficiently analyzed magic is indistinguishable from science.

Any sufficiently advanced technology is indistinguishable from magic.



There is no theory of protecting content other than keeping secrets – Steve Jobs

Berichten: 2.589

Re: Namespace c++.

Oké bedankt.

Reageer