1 van 1

Namespace c++.

Geplaatst: di 11 sep 2007, 15:03
door Bert F
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.

Re: Namespace c++.

Geplaatst: di 11 sep 2007, 16:03
door Cycloon

Re: Namespace c++.

Geplaatst: di 11 sep 2007, 16:03
door Rogier
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

Re: Namespace c++.

Geplaatst: di 11 sep 2007, 16:19
door Bert F
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

Re: Namespace c++.

Geplaatst: di 11 sep 2007, 16:47
door Cycloon
Het is idd gewoon een 'link' voor je compiler zodat hij weet wat hij moet doen met verschillende commando's zoals cin, cout...

Re: Namespace c++.

Geplaatst: di 11 sep 2007, 19:48
door Bert F
Hoe is het dan te vergelijken met package in java?

Re: Namespace c++.

Geplaatst: di 11 sep 2007, 21:01
door qrnlk
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++)

Re: Namespace c++.

Geplaatst: wo 12 sep 2007, 18:48
door Bert F
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.

Re: Namespace c++.

Geplaatst: wo 12 sep 2007, 18:56
door qrnlk
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.

Re: Namespace c++.

Geplaatst: wo 12 sep 2007, 21:48
door Bert F
Oké bedankt.