我有一个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]
是一个空 vector 时,ptr
可以是任何东西,但不能引发运行时错误,这就是现在所做的。因此,如果我以后有代码
selectedunits[0].push_back(2);
,我希望ptr
指向allunits[0][2].holding[0]
,然后selectedunits[0][0]=1;
行应使ptr
指向allunits[0][1].holding[0]
编辑:这段代码的重点:
这一切都是为了游戏。
allunits
是单位的 vector ,并且selectedunits
存储选择的单位。它们是二维的,因为它们都组织为[player] [index]。 allunits[0]
保存第一个玩家的单位,依此类推。指针将传递给某个对象的构造函数,该对象在某些条件下会将文本打印到屏幕上。要打印的文本是有关所选单位的信息,并且包括指针指向的任何数字。不同的对象将打印不同的数据,因此将显示指针。
最佳答案
使用一个函数或类。如果您使用的是C++ 11,请在本地创建一个绑定(bind)到 vector 的lambda。否则,创建一个将 vector 作为const by-reference参数的函数,或者将 vector 移到其自己的类中,并将访问器代码放入成员函数中。