我想用兩個(實際上更多,但並不重要)源代碼編譯代碼。在其中的一個我聲明的變量大小的數組像這樣:在C++源文件之間共享動態分配的數組
const int number_of_equidistant = spike_location[number_of_spikes-1];
point_type* equidistant = NULL;
equidistant = new point_type[number_of_equidistant];
它工作正常,只要我只有在我宣佈它相同的源文件中使用它。然而,我想在其他地方訪問它(在這一點上只是打印出來的內容來檢查它做它應該做什麼),這就是動態大小導致問題的地方(我試圖聲明大小爲extern const int但那不起作用)。有沒有解決方法,或者這是一個特別愚蠢的方法,並應該以某種方式不同?
的具體錯誤報告是這樣的:
debug.cpp: In function ‘void debug_initialization()’:
debug.cpp:71:56: error: storage size of ‘equidistant’ isn’t constant
extern point_type equidistant[number_of_equidistant];
在debug.cpp,數組和大小聲明如下:
extern const int number_of_equidistant;
extern point_type equidistant[number_of_equidistant];
我當然可以將其更改爲一個列表(或堆或類似的東西),但我寧願能夠通過索引輕鬆訪問數據。任何其他做法超出了我的知識,所以我歡迎,你正在使用
extern point_type equidistant[number_of_equidistant];
任何建議:)
這是一個全局變量,或函數中的變量? – 2014-09-24 20:24:51
爲什麼不使用像'std :: vector'這樣明智的集合? – 2014-09-25 08:48:12
大衛:我可能會去。 gnat:抱歉張貼在一個錯誤的組。到目前爲止,我只使用了math.stackexchange。 – Trademark 2014-09-27 17:59:27