Können Sie sich ein Zeiger als extern in C ++ deklarieren?
Frage
Ich habe folgendes Bit von Legacy-C ++ Code, der nicht kompilieren:
#include <stdio.h>
#include <iostream>
extern ostream *debug;
GCC (g ++) klagt: "expected initializer vor‚*‘Token"
um es Blick scheint häufiger diese als externe Referenzen zu erklären, wie folgt aus:
extern ostream& debug;
Warum ist ein Zeiger nicht gültig ist, sondern eine Referenz in dieser Situation?
LÖSUNG:
Das eigentliche Problem, wie unten erwähnt ist, dass die std :: Namespace-Bezeichner fehlen. Offenbar war dies bei älteren C ++ Code gemeinsam.
Lösung
Ja, können Sie einen Zeiger mit extern deklarieren. Ihr Fehler ist höchstwahrscheinlich Sie mit std::
zu qualifizieren vergessen:
// note the header is cstdio in C++. stdio.h is deprecated
#include <cstdio>
#include <iostream>
extern std::ostream *debug;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow