2017-04-01 99 views
0

命名空間中的括號內我MainApp.XAML.h文件,我有:的Visual C++變量聲明

int food; 
food = 0; 

當我編譯代碼時,我得到了幾個錯誤的說法:

Error C4430 missing type specifier - int assumed 

和:

Error C2086 'int MonsterFights::food': redefinition 

但是當我谷歌如何聲明一個變量,它顯示了與我在做的相同的方式。

我錯過了什麼嗎?

- 編輯 -

所以,如果我需要把我的變量在我的.cpp文件,凡在.cpp文件abouts我把它們?

目前我在這裏:

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

回答

4

有兩個問題在這裏:

  1. 首先,你必須在頭文件中的變量定義。這意味着變量將在每個包含頭文件的translation unit(大致包含所有包含的頭文件的源文件)中定義。

    每個變量只能有一個單一的定義,並且在頭文件中應該只有聲明。移動定義一個源文件,並有一個聲明,而不是在頭文件:

    extern int food; 
    
  2. 的第二個問題是,你不能有一般性發言在全局範圍內或在命名空間範圍,只聲明和定義。

    你可以通過改變你的定義(你在源文件中有一個)解決這個初始化變量:

    int food = 0; 
    

    請注意,是不是真的需要全局變量此初始化。編譯器將確保否則未初始化的全局變量適合初始化爲「零」,對於int變量,這意味着它們將變爲0

+0

我想你的第二部分,現在我得到這個錯誤:'錯誤LNK2005 \t \t 「詮釋MonsterFights ::食品」(?食品@ MonsterFights @@ 3HA)在App.xaml.obj' – mast3rd3mon

+1

已經定義@ mast3rd3mon你讀過第一部分了嗎? –

+0

是的,還沒有完全弄清楚類文件,但我理解類 – mast3rd3mon