[問題] 請問template overriding和初始值設定問題

看板C_and_CPP作者 (iris)時間15年前 (2010/06/03 23:38), 編輯推噓4(407)
留言11則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 1.寫陣列的overridding時 如果是float型態就動態配置5個存取float記憶體 其他型態則為10個 template<> class Array<float>的overridding 2.template class動態配置array記憶體, string的初值自動default為空字串, 其他型態的則是已經存於記憶體中的渣渣 希望得到的正確結果: 1.產生一個大小為5的float陣列可供輸入 2.希望動態配置型態不確定的陣列初始值可以設為0或空 程式跑出來的錯誤結果: 1.測試過有成功配置記憶體,大小也是5, 但是如果第3數輸入float就會產生錯誤直接結束程式 2.ambiguous overload for 'operator=' in '*(((Array<std::string>*)this)-> Array<std::string>::content + (+(((unsigned int)i) * 4u))) = 0' 不能將沒用到的空間設定初值為0或空 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) dev-C++ 有問題的code: (請善用置底文標色功能) if(count>=size) { int temp=size; T *temparray; temparray = new T[temp]; for(int i=0;i<size;i++) temparray[i]=content[i]; size=size*2; content=new T[size]; for(int i=0;i<temp;i++) content[i]=temparray[i]; // for(int i=temp;i<size;i++) // content[i]=0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.253.235

06/04 01:50, , 1F
你用個置底空間貼整份 code 上來吧
06/04 01:50, 1F

06/04 03:38, , 2F
06/04 03:38, 2F

06/04 04:41, , 3F
array=new T(size); ←這應該不是你想要的吧?
06/04 04:41, 3F

06/04 10:46, , 4F
是要練習的呀 @-@ 要用template開不同型態的陣列
06/04 10:46, 4F

06/04 15:46, , 5F
那你可能要再看一下中括號跟小括號的差別 ~"~
06/04 15:46, 5F

06/05 18:28, , 6F
我有測試過 可是()同樣可以開啟該大小陣列 QQ
06/05 18:28, 6F

06/06 06:23, , 7F
你用小括號只有配置一份記憶體空間, 除了[0]其他存取
06/06 06:23, 7F

06/06 06:26, , 8F
都是不合法的, 再加上new 跟 delete 方法不一致, 有可
06/06 06:26, 8F

06/06 06:26, , 9F
能在解構的地方也出問題
06/06 06:26, 9F

06/10 13:51, , 10F
感謝^^ 可能只是運氣好某些型態陣列用()才會出來
06/10 13:51, 10F

06/10 13:52, , 11F
還是()時我用dev-C compile有給過但是有時候會出問題
06/10 13:52, 11F
文章代碼(AID): #1C1ynnMc (C_and_CPP)