期末projects使用cygwin時
去編譯在unix環境下寫的c++程式所發生的錯誤訊息
cygwin即是在windows下模擬unix的command mode
(不知道如何稱呼,總之是文字模式)
其中的問題點在於編譯到某兩個檔案時
均會產生:error: ISO C++ forbids initialization in array new
上網查資料竟然發現資料不多
但幸好還是有找到解決方法
以下文字出自[藍森林-自由軟件]並將一些字換成英文:
"過去版本的C++編譯器允許在new array時候進行初始化。如已經定義一個class T,可以這樣初始化:T* p = new T[10](5);或者 T* p = new T[10](5, 7),即用戶可以通過call class T 的不同的constructor進行相應的初始化。
但是現在的C++標準或者C++編譯器(如最新版本的GCC 3.4.0)則不允許這樣做,在new的時候只能call default的constructor初始化對象,用戶不能指定初始化值或者要求使用哪一個constructor進行初始化。如果你這樣做,編譯器會輸出一條錯誤信息:error: ISO C++ forbids initialization in array new。另外,如果你指定初始化值的話,不錯,就像你說的那樣,編譯器還是跟從前一樣進行檢查,看是否跟class的constructor的格式一致,如果不一致,除了上面的錯誤之外,還會回報沒有相應的constructor的錯誤。"
因此解決的方法為在cygwin安裝Devel的packages時
gcc預設的版本為3.4.4.3(印象中)
但可選擇為3.3.3.3的版本
也就如同上述那段文字GCC 3.4.0編譯時會產生這樣的錯誤
而選擇安裝較舊3.3.3.3的版本後即可編譯成功
也就順利解決問題!
- Jul 05 Thu 2007 02:07
error: ISO C++ forbids initialization in array new
close
全站熱搜
留言列表
發表留言