首页 > 解决方案 > 通过指向指针数组的指针访问子类的属性

问题描述

假设我想实现一袋蠕虫。我有蠕虫,它有一个int属性 ID。我还有一个班级包:

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;

并且代码被编译但是当我执行时我得到Segmentation fault: 11. 我已经检查(通过评论)问题是由 ID 提取的确切行引起的。
我应该如何访问包中类 Worm 的字段和调用方法?

标签: c++classmemorymemory-management

解决方案


用 this->population 或类似的东西替换 Worm** population = new Worm*[N]。

您正在分配局部变量“population”而不是成员“population”-> bag.population 仍然为空


推荐阅读