2017-04-01 5 views
0

In meiner MainApp.XAML.h Datei innerhalb der Namespace-Klammern, die ich habe:Visual C++ Variablendeklarationen

int food; 
food = 0; 

Wenn ich den Code zu kompilieren ich ein paar Fehler bekommen sagen:

Error C4430 missing type specifier - int assumed 

und:

Error C2086 'int MonsterFights::food': redefinition 

aber wenn ich google, wie man eine Variable erklärt, zeigt es die selbe Weise, wie ich tue.

Fehle ich etwas?

--EDIT--

Also, wenn ich meine Variablen in meiner CPP-Datei setzen müssen, wo abouts in der CPP-Datei kann ich sie stellen?

Zur Zeit habe ich es hier:

MainPage::MainPage() 
{ 
    InitializeComponent(); 
} 
int food = 5; 

Antwort

4

Es gibt zwei Probleme:

  1. Die erste ist, dass Sie eine Variable Definition in der Header-Datei haben. Das bedeutet, dass die Variable in jeder translation unit (ungefähr eine Quelldatei mit allen eingeschlossenen Header-Dateien) definiert wird, wo Sie die Header-Datei einschließen.

    Sie können nur eine einzige Definition jeder Variablen haben und sollten nur Deklarationen in der Header-Datei haben. Bewegen Sie die Definition einer einzigen Quelldatei und haben eine Erklärung stattdessen in der Header-Datei:

    extern int food; 
    
  2. Das zweite Problem ist, dass Sie keine allgemeinen Aussagen im globalen Bereich haben kann oder im Namensraum Umfang, nur Deklarationen und Definitionen.

    Sie lösen, indem du deine Definition zu ändern (die Sie in einer Quelldatei) zu initialisieren die Variable:

    int food = 0; 
    

    Beachten Sie, dass diese Initialisierung nicht wirklich für global Variablen benötigt wird. Der Compiler wird sicherstellen, dass ansonsten nicht initialisierte globale Variablen geeignet auf "Null" initialisiert werden, was für int Variablen bedeutet, dass sie 0 werden.

+0

habe ich versucht, Ihren zweiten Teil und ich jetzt diesen Fehler: 'Fehler \t LNK2005 \t "int MonsterFights :: Nahrungsmittel"(? Food @ MonsterFights @@ 3HA) in App.xaml.obj' definierte bereits – mast3rd3mon

+1

@ mast3rd3mon Und hast du den ersten Teil gelesen? –

+0

yeah, habe die Klassendateien noch nicht vollständig herausgefunden, aber ich verstehe Klassen – mast3rd3mon

Verwandte Themen