2013-04-26 82 views
1

我一直在研究這個問題一段時間。我「米只是希望從一個類傳遞一個字符值到另一個visual C++中的全局變量

在我的頭文件我有一個變量聲明:

extern char variable1; 

在class1.cpp我有同樣的變量聲明:

char variable1 = 'N'; 

在class2.cpp我有相同的變量聲明:我不此由於初始化爲Y/N所需的邏輯在class1.cpp

char variable1; 

我對這將如何工作的假設是,我會通過邏輯將其設置爲Y或將其保持爲N,如在類1中初始化,一旦函數完成,我將單擊表單上的按鈕到下一個類,因爲它們都具有相同的名稱,並且文件名在關鍵字extern的頭文件中,它會來回傳遞值,我的想法是錯誤的嗎?我還是新來的Visual C++,所以我只是想學習。

+0

我認爲我們需要更多的細節,實際上並不清楚 – Nagasaki 2013-04-26 14:48:35

+1

當您在class2.cpp中再次聲明變量時,是否發生構建錯誤?你所要做的就是在class2.cpp中包含頭文件,並且只定義一次變量(你已經在class1.cpp中完成了)。 – Mahesh 2013-04-26 14:50:17

+0

我不確定你還需要什麼。我一直在閱讀的是,你需要將頭文件中的變量聲明爲extern,然後在你計劃使用變量的所有.cpp類中再次聲明該文件。仔細研究如何真正傳遞數據,目前它沒有在兩個類之間傳遞 – Criel 2013-04-26 14:50:24

回答

2

char variable1;沒有extern不是聲明,這是一個定義。這意味着你是定義變量在class2.cppclass1.cpp,這是非法的。只在一個.cpp文件中定義它。其他.cpp文件應該包含聲明的頭文件,這將使他們能夠訪問變量。

+0

這是我的問題。我對傳遞變量的理解並不完全正確,謝謝大家! – Criel 2013-04-26 14:57:38

+0

@Criel只是爲了澄清 - 你沒有在任何地方傳遞任何東西。你的程序中只有一個全局變量,並且你從兩個不同的位置訪問它。傳遞意味着將某些東西作爲一個函數的參數,並且通常比共享的全局狀態更好。 – Angew 2013-04-26 15:01:55

0

如果您在class1的cpp文件中聲明瞭extern char variable1;,並且在class2中定義了char variable1;,那麼您應該可以做到您想要的。