看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《littleshan (我要加入劍道社!)》之銘言: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.151.2
EragonJ:所以就目前array的角度而不用vector,是做不到的嗎? 06/09 14:29
唉,硬要做也不是不行啦,但我真的很不想提這個做法, 這方法叫 placement new char* array = new char[sizeof(Time) * 5]; Time* t = new(array) Time(1, 2, 3); new(array + sizeof(Time)) Time(4, 5, 6); new(array + sizeof(Time)*2) Time(7, 8, 9); ... 這樣一來 t[0] ~ t[4] 就是你要的 Time 物件,是 new 出來的, 不過你要 delete 時必須手動呼叫 dtor: for(i = 0; i < 5; ++i) t[i].~Time(); delete[] array; // 絕對別呼叫 delete[] t 你不會想這麼做的,所以要嘛等待 C++0x compiler 的出現, 不然還是捏著鼻子,vector 將就用一下吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.151.2
EragonJ:了解,感謝你!! 06/09 15:26