Si può dichiarare un puntatore come extern in C ++?
Domanda
Ho il seguente pezzo di eredità codice C ++ che non compila:
#include <stdio.h>
#include <iostream>
extern ostream *debug;
GCC (g ++) si lamenta: "initializer atteso prima di‘*’token"
Guardandosi intorno sembra più comune di dichiarare questi come riferimenti esterni, in questo modo:
extern ostream& debug;
Perché è un puntatore non valido, ma un punto di riferimento si trova in questa situazione?
SOLUZIONE:
Il vero problema, come detto sotto è che l'identificatore std :: namespace manca. Apparentemente, questo era comune in più vecchio codice C ++.
Soluzione
Sì, si può dichiarare un puntatore utilizzando extern. Il tuo errore è più probabile che si è dimenticato di qualificarsi tramite std::
:
// note the header is cstdio in C++. stdio.h is deprecated
#include <cstdio>
#include <iostream>
extern std::ostream *debug;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow