繁体   English   中英

如何在c ++中创建“动态”指针

[英]How do I create a 'dynamic' pointer in c++

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM