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.

War es hilfreich?

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
scroll top