Bien qu'il n'y ait pas d' occurrence #include <string>
dans un fichier source particulier, cela ne signifie pas qu'il n'a pas été inclus par un autre fichier d'en-tête. Considère ceci:
Fichier : header.h
#if !defined(__HEADER_H__)
#define __HEADER_H__
// more here
#include <string>
// ...and here
#endif
Fichier : source1.cc
#include <string>
void foo()
{
// No error here.
string s = "Foo";
}
Fichier : source2.cc
#include <header.h>
void bar()
{
// Still no error, since there's a #include <string> in header.h
string s = "Bar";
}
Fichier : source3.cc
void zoid()
{
// Here's the error; no such thing as "string", since non of the
// previous headers had been included.
string s = "Zoid";
}