De #include<iostream> bestaat, maar ik krijg een foutmelding: identifier “cout” is niet gedefinieerd. Waarom?

Ik leer C++ en COM via de boeken.
In de IDE MS Visual Studio 2012 heb ik een nieuw leeg C++-project gemaakt en er enkele bestaande bestanden aan toegevoegd. Mijn CPP-bestand bevat de rij #include<iostream>, maar in de editor kreeg ik dergelijke berichten:

Fout: identifier “cout” is niet gedefinieerd

einde

Fout: identifier “endl” is niet gedefinieerd

Scherm:

Waarom gebeurt het?


Antwoord 1, autoriteit 100%

U moet de std::naamruimte specificeren:

std::cout << .... << std::endl;;

U kunt ook een using-instructie gebruiken:

using std::cout;
using std::endl;
cout << .... << endl;

Ik moet hieraan toevoegen dat u deze using-richtlijnen in headers moet vermijden, aangezien code die deze bevat, ook de symbolen in de globale naamruimte zal brengen. Beperk het gebruik van richtlijnen tot kleine bereiken, bijvoorbeeld

#include <iostream>
inline void foo()
{
  using std::cout;
  using std::endl;
  cout << "Hello world" << endl;
}

Hier is de using-richtlijn alleen van toepassing op het bereik van foo().


Antwoord 2, autoriteit 24%

Je kunt dit aan het begin toevoegen na #include <iostream>:

using namespace std;

Antwoord 3, autoriteit 15%

coutin std namespace staat, moet je std::coutin je code gebruiken.
En je mag using namespace std;niet toevoegen aan je header-bestand, het is slecht om je code te mixen met std namespace, vooral niet toevoegen in header-bestand.


Antwoord 4, autoriteit 4%

Het probleem is de std namespace die je mist. coutstaat in de std namespace.
Voeg using namespace std; na de #include

Other episodes