Problem der Deklaration extern-Klasse-Objekt
Lassen Sie mich beginnen mit den Worten, ich habe ausgiebig gesucht, nach Antworten auf google und hier genauer.
Der Sache ist, dass ich eigentlich (glaube ich zumindest ich) den Menschen gefunden, mit ähnlichen Problemen, obwohl die Antwort gegeben, Sie gab mir ein weiteres problem.
Ich bin mit Visual Studio 2010 Express und die Arbeit mit SFML Bibliothek (obwohl ich nicht denke, dass dieser Letzte Teil ist relevant)
Also hier geht es:
Ich habe eine Quelldatei namens player.cpp hält, die Klasse Spieler und ich habe eine header-Datei (enthalten in allen source-Dateien), genannt cc.h(Kommando und Kontrolle) , hält alle notwendigen includes und externe Variablen/Funktionen. Der Hauptcode kann zusammengefasst werden in den folgenden:
Player.cpp:
#include "cc.h"
class Player
{
private:
//some variables here
public:
//more variables and some functions
}john;//example instance
cc.h:
#pragma once
//some #includes
//some externs
extern Player john;
Nun in cc.h das Wort Player ist Unterstrichen als Fehler, die sagen, es ist ein undefined identifier , aber nur manchmal, andere Male visual studio nicht markieren es als Fehler, sondern erkennt es als eine Klasse, aber nicht erkennt john als ein Objekt/Instanz (ich hoffe es heißt so) der gleichen Klasse.
Außerdem, bei der Erstellung des ersten Fehler zeigt es ist "error C2146: syntax error : missing ';' before identifier 'john'
" auf der Linie der extern-Deklaration von john, in cc.h, die offenbar (für mich) keinen Sinn.
InformationsquelleAutor João Silva | 2012-01-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der globalen Deklaration cc.h würde dir nicht helfen, denke ich -, weil Sie erklären, um es von wo anders (andere als Player.cpp), aber dafür müssen Sie die Methode der Unterschriften - so schnell, wie Sie möchten Zugang
john
von anderswo, und so gehören Player.cpp Sie erhalten Duplikate-Symbole.Bitte erwägen, eine
Player.h
Datei, wo nur die Klasse und die Methode-Signaturen deklariert werden - wie diese:und fügen Sie diese an cc.h:
und in Ihrem Player.cpp
Diese stellt sicher, dass die
Player
Signaturen bekannt sind und eine gültige Instanz ist Global definiert.Ich habe ein paar fehlende semi Doppelpunkte und den Fehler korrigiert, Mike Punkte (Bezeichner, beginnend mit Unterstrich und Großbuchstaben sind reserviert)
InformationsquelleAutor Coder02
Müssen Sie legen Sie die definition des
Player
Klasse in der header-Datei, bevor Sie deklarieren dieextern
variable. Sonst hat der compiler keine Ahnung, wasPlayer
ist.Ich schlage vor, so etwas wie dieses:
- player.h
player.cpp
cc.h
InformationsquelleAutor Oliver Charlesworth
Player
Klasse, die in Ihrem header-Dateiextern
variable, die eine externe Verknüpfung, und ist bereits in einer anderen Datei.Beispiel: Sie haben die Datei
a.cpp
, und innerhalb dieser Datei eine Globale variablePlayer p
. Wenn Sie möchten, verwenden Sie die exakt gleiche Instanzp
vonPlayer
im Datei -c.cpp
dann innerhalb von Dateic.cpp
schreiben Sieextern Player p
.Ich hoffe das ich mich klar genug ausgedrückt.
InformationsquelleAutor user989583