[問題] 動態產生的物件指標陣列,只能存取第0個
class RemoteControl
{
private:
Command* onCommand; //數量尚未決定
Command* offCommand;
public:
RemoteControl(int No)
{
onCommand = new Command[No];
offCommand = new Command[No];
onCommand = new Command();
onCommand+1 = new Command(); //ERROR,編譯不過
}
}
這是一個我覺得很奇怪的地方,
complier都不知道我 No 要輸入多少,
先擅自阻止我存取第 0 個以外的物件指標,
覺得如果會錯,應該也是runtime out of range才有錯,
應該是我哪裡沒有想通??
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.245.65.143
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1396459225.A.F68.html
推
04/03 01:39, , 1F
04/03 01:39, 1F
用watch看過實際位址確認
onCommand == &onCommand[0]
onCommand+1 == &onCommand[1]
但是
onCommand = new Command(); //ok
&onCommand[0] = new Command(); //不過
&onCommand[1] = new Command(); //不過
onCommand+1 = new Command(); //不過
→
04/03 01:40, , 2F
04/03 01:40, 2F
這無法理解, onCommand+1 不是我用new在記憶體中劃好可以支配的位址嗎?
※ 編輯: deo2000 (60.245.65.143), 04/03/2014 02:42:07
※ 編輯: deo2000 (60.245.65.143), 04/03/2014 02:43:57
推
04/03 09:34, , 3F
04/03 09:34, 3F
→
04/03 09:34, , 4F
04/03 09:34, 4F
→
04/03 09:35, , 5F
04/03 09:35, 5F
→
04/03 09:35, , 6F
04/03 09:35, 6F
推
04/03 11:37, , 7F
04/03 11:37, 7F
→
04/03 11:38, , 8F
04/03 11:38, 8F
推
04/03 12:09, , 9F
04/03 12:09, 9F
→
04/03 12:12, , 10F
04/03 12:12, 10F
→
04/03 12:12, , 11F
04/03 12:12, 11F
推
04/03 23:07, , 12F
04/03 23:07, 12F
→
04/04 12:52, , 13F
04/04 12:52, 13F
最近在學C#所以有點搞混了, 因為C#和Java好像都一定要
執行n次 new Command() 才會建構出n個物件,
剛用建構子cout檢查過, 原來C++ new Command[n] 一次就可以建構n個物件,而不只是ref
我的目的是要在指向 n 個物件的陣列上, 隨時抽換所指的物件 (這是設計模式作業)
那請問在C++要怎麼做呢?? 我查了好幾本書都沒講到這種作法
※ 編輯: deo2000 (1.167.192.145), 04/04/2014 16:29:22
→
04/04 17:26, , 14F
04/04 17:26, 14F
→
04/04 17:27, , 15F
04/04 17:27, 15F
→
04/04 17:27, , 16F
04/04 17:27, 16F
vector<Command*>很方便, 但是我這不是在趕出貨, 想要先慢慢把指標磨好
用2D 動態arrayr結果變這樣
public:
RemoteControl(int No)
{
cout << "RemoteControl物件 建構開始" << endl;
for(int i=0;i<No;i++)
{
(*ptr_onCommand)+i = new Command();//compiler ERROR 必須是可修改的左值,我覺得這個比較正確
*(ptr_offCommand+i) = new Command();//runtime ERROR 存取違規
}
cout << "RemoteControl物件 建構結束" << endl;
}
※ 編輯: deo2000 (42.78.201.190), 04/04/2014 20:52:35
※ 編輯: deo2000 (42.78.201.190), 04/04/2014 20:54:48
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
-4
5