我有一个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 移到其自己的类中,并将访问器代码放入成员函数中。

08-17 02:31