3

我有一个类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]持有第一个玩家的单位,依此类推。

在某些条件下,指针被传递给将文本打印到屏幕的对象的构造函数。要打印的文本是有关所选单位的信息,包括指针指向的任何数字。不同的对象将打印不同的数据,因此是指针。

4

1 回答 1

0

使用函数或类。如果您使用的是 C++11,请在本地创建一个绑定到向量的 lambda。否则,创建一个将向量作为 const 引用参数的函数,或者将向量移动到它们自己的类中并将访问器代码放入成员函数中。

于 2012-12-24T21:10:17.577 回答