Se puede declarar un puntero como extern en C ++?
Pregunta
Tengo el siguiente bit del legado C ++ código que no se compila:
#include <stdio.h>
#include <iostream>
extern ostream *debug;
GCC (g ++) se queja: "inicializador esperada antes de símbolo‘*’"
Mirando a su alrededor parece más común para declarar estos como referencias externas, como esto:
extern ostream& debug;
¿Por qué es un puntero no válido, pero es una referencia en esta situación?
SOLUCIÓN:
El problema real, como se menciona a continuación es que el especificador de espacio de nombres std :: falta. Al parecer, esto era común en los mayores de código C ++.
Solución
Sí, se puede declarar un puntero usando extern. es más probable que se olvidó de calificar usando std::
su error:
// note the header is cstdio in C++. stdio.h is deprecated
#include <cstdio>
#include <iostream>
extern std::ostream *debug;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow