我有一个班级unit
,其元素为int holding[4];
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]
保存第一个玩家的单位,依此类推。
指针被传递给在某些条件下将文本打印到屏幕的对象的构造函数。要打印的文本是有关所选单元的信息,包括指针指向的任何数字。一个不同的对象会打印不同的数据,因此指针。
答案 0 :(得分:0)
使用函数或类。如果您使用的是C ++ 11,请在本地创建一个绑定到向量的lambda。否则,创建一个函数,将向量作为const by-reference参数,或将向量移动到它们自己的类中,并将访问器代码放在成员函数中。