[英]How do I pass an int map[60][60] array from my main.cpp file to my findpath.cpp file in c++?
[英]How do I export an initialized variable from a header file to my main.cpp file in C++?
我的main.cpp包含頭文件setup.h 。
setup.h從文件讀取數據,然后在main.cpp中使用它。
在setup.h讀取的數據文件中,一條數據是單個float變量,我需要在main.cpp中的函數中(從另一個頭文件使用)使用它。
在頭文件中定義變量時,我不能使用extern,因為那樣我就不能用文件中的數據對其進行初始化(編譯時會出錯):
安裝程序
...
extern float G = 0;
input >> G;
...
main.cpp
...
float G;
instance function(G);
...
如何在main.cpp文件中獲取初始化變量?
在標頭中,您只需要聲明變量,以便編譯器知道它存在於某個位置:
extern float G;
在編譯單元(cpp)之一中,必須定義變量。 然后可以初始化它:
float G = 0.0;
不要濫用全局變量;-)
使用#include
-directive包含文件時,您可以認為所包含文件的內容直接插入了#include
-statement的位置。 這意味着頭文件的內容不是單獨編譯的,而是在包含它的翻譯單元的過程中(以及在包含它的地方的上下文中)進行編譯的。
因此,您的代碼可能會導致...
extern float G = 0;
input >> G;
float G;
然后有幾個問題。
首先,變量G
被定義兩次。 請注意, extern
與初始化程序一起不僅聲明而且實際上定義了一個變量(盡管使用了extern
-keyword)。 其次,語句input >> G
可能在不允許的文件范圍內使用(此類代碼必須放置在函數內)。
所以你唯一能做的就是...
安裝程序
extern float G; // no initialisation here
setup.cpp
float init() {
float dummy;
cin >> dummy;
return dummy;
}
float G = init(); // definition and initialization through a function
main.cpp
#include "setup.h"
int main() {
cout << G; // use of (initialized, externally defined) G
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.