如何在 c++ 中创建'dynamic'指针
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]
的新值。当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移到它们自己的类中,并将访问器代码放在成员函数中。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- 如何在 c++ 中创建'dynamic'指针