você pode declarar um ponteiro como extern em C ++?
Pergunta
Eu tenho o seguinte trecho de legado C ++ código que não compila:
#include <stdio.h>
#include <iostream>
extern ostream *debug;
GCC (g ++) reclama: "Espera initializer antes‘*’token"
Olhando em volta parece mais comum para declarar estes como referências externas, como esta:
extern ostream& debug;
Por que é um ponteiro não é válido, mas uma referência está nesta situação?
SOLUÇÃO:
O verdadeiro problema, como mencionado abaixo é que o especificador std :: namespace está faltando. Aparentemente, este era comum no código antigo C ++.
Solução
Sim, você pode declarar um ponteiro usando extern. O seu erro é mais provável que você se esqueceu de se qualificar usando std::
:
// note the header is cstdio in C++. stdio.h is deprecated
#include <cstdio>
#include <iostream>
extern std::ostream *debug;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow