推 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