通过指向指针数组的指针访问子类的属性
Accessing attributes of subclass through pointer to an array of pointers
假设我想要实现一个蠕虫包。我有类蠕虫,它有一个int属性ID。我还有一个类Bag:
class Bag{
// pointer to a 1D array of pointers to all the worms
Worm** population;
// constructor
Bag(){
// initiate 1D population of the worms
int N = 100;
Worm** population = new Worm*[N];
for (int i=0; i<N; i++){
Worm new_worm(i);
population[i] = &new_worm;
}
}
}
由于N
在编译时是已知的,我不确定是否必须动态分配数组?
我的问题是,在稍后的代码中,我想执行:
Bag bag();
int ID = bag.population[10]->ID;
并且代码被编译,但是当我执行时,我得到CCD_ 2。我已经(通过评论(检查了问题是由ID提取的确切行引起的
我应该如何访问包中Worm类的字段和调用方法?
用这个->population或类似的东西替换Worm**population=new Worm*[N]。
您正在分配局部变量"population"而不是成员"population"->bag.population仍然为空
实际上,我认为真正的问题是使用局部变量new_worm
的地址初始化population
数组。我认为,分配给数组的地址是否会有差异是不确定的(初始化循环可以自由使用new_worm
变量在本地堆栈上的同一位置。
尽管还有其他方法可以解决这个问题,但其中一种是更换两条线路:
Worm new_worm(i);
population[i] = &new_worm;
带有:
population[i] = new Worm(i);
相关文章:
- 通过指向指针数组的指针访问子类的属性
- 使用指针访问数组中的对象数据成员
- 无法通过指针访问对象的成员
- decltype:使用指针访问类的静态成员
- 是否可以使用指针访问变量以避免直接编辑变量?
- 为什么 C++ 地址中的矢量无法通过原始指针访问
- 使用指针访问数组元素时出现意外结果
- 使用指针访问数组的值
- C++继承从基类指针访问派生类中的非虚拟函数
- 如何使用指针访问成对向量的元素
- 为什么有些库提供无指针访问,而另一些库则不提供
- 如何通过引用或指针访问二维矢量
- 使用指针访问参数接收的结构中的元素时内存泄漏
- 我正在学习C++,我不能使用指针访问参考吗?(举个例子)
- 复制堆栈上的成员值或使用指针访问它?
- C++娜娜 如何从全局列表框*指针访问列表框内的索引 0 上的按钮?
- 通过此指针访问时的成员差异和自身的成员指针(简单的 QT 示例问题)
- 从指针访问 Kaguya Lua 状态
- 说明通过指针访问非静态类成员函数
- 有没有办法使用初始化到第一行的指针访问 2d 数组的第二行?