Pouvez-vous déclarer un pointeur comme extern en C ++?
Question
Je le bit suivant de l'héritage du code C ++ qui ne compile pas:
#include <stdio.h>
#include <iostream>
extern ostream *debug;
GCC (g ++) se plaint: "initialiseur attendue avant « * » jeton"
En regardant autour, il semble plus fréquent de les déclarer comme des références externes, comme ceci:
extern ostream& debug;
Pourquoi est-un pointeur non valide, mais une référence est dans cette situation?
SOLUTION:
Le vrai problème, comme mentionné ci-dessous est que le std :: spécificateur d'espace de noms est manquant. Apparemment, ce qui est courant dans plus de code C ++.
La solution
Oui, vous pouvez déclarer un pointeur à l'aide extern. Votre erreur est plus probable que vous avez oublié de se qualifier en utilisant std::
:
// note the header is cstdio in C++. stdio.h is deprecated
#include <cstdio>
#include <iostream>
extern std::ostream *debug;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow