如何在 c++ 中创建'dynamic'指针

How do I create a 'dynamic' pointer in c++

本文关键字:dynamic 指针 创建 c++      更新时间:2023-10-16

我有一个类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存储选择的单位。它们是二维的,因为它们都被组织成[玩家][索引]。allunits[0]保存第一个玩家的单位,以此类推。

指针传递给对象的构造函数,该对象在特定条件下将文本打印到屏幕上。要打印的文本是关于所选单元的信息,包括指针所指向的数字。不同的对象将打印不同的数据,因此使用指针。

使用函数或类。如果使用c++ 11,在本地创建一个绑定到向量的lambda。否则,创建一个函数,将vector作为const by-reference实参,或者将vector移到它们自己的类中,并将访问器代码放在成员函数中。