我有一個類unit
,與元素int holding[4];
我如何在C創建一個「動態」指針++
void main()
{
vector<vector<unit> > allunits;
vector<vector<short> > selectedunits; //This contains certain indexes for the above vector
allunits.resize(2);
selectedunits.resize(2);
allunits[0].resize(5);
int *ptr = &allunits[0][selectedunits[0][0]].holding[0]; //obviously dysfunctional
}
我想是有這個指針改變它所指向的動態。當selectedunits[0][0]
的值發生變化時,我想ptr
自動指向新值allunits[0][selectedunits[0][0]].holding[0]
。當selectedunits[0]
是一個空向量時,ptr
可以是任何東西,但它不能拋出運行時錯誤,這是它現在所做的。
所以,如果我以後有代碼selectedunits[0].push_back(2);
,我想ptr
指向allunits[0][2].holding[0]
,再行selectedunits[0][0]=1;
應該讓ptr
點allunits[0][1].holding[0]
編輯:此代碼的點:
這是所有的一場比賽。 allunits
是單位的向量,並且selectedunits
商店哪些單位被選中。它們是二維的,因爲它們都被組織成[player] [index]。 allunits[0]
擁有第一位玩家的單位,依此類推。
將指針傳遞給構造函數,以便在特定條件下將文本顯示在屏幕上。要打印的文本是關於所選單元的信息,並且包括指針指向的任何數字。一個不同的對象會打印不同的數據,因此是指針。
我確定有更好的方法來做你正在做的事情。 – 0x499602D2
嘗試重新構建添加更多域特定信息和更少代碼的問題。我同意戴維的觀點,你很可能是以不理想的方式做到這一點。 – bobah
不是聽起來像一個白癡,但你是什麼意思'域特定信息'? – drowdemon