C++从另一个类调用(向量)指针返回空大小



我试图制作一个SDL迷你游戏,当我试图调用另一个类的向量指针时遇到了问题。问题是,当我调用函数时,结果是一个空向量。

在这个类中,我调用drawBoss每帧

class badBoss {
public:
    struct fire {
        int type, x, y;
        float v, vx, vy;
        int angle;
    };
    std::vector<fire> vFire;
    std::vector<fire> *pvFire = &vFire;

    void drawBoss(SDL_Renderer *ren) {
        vFire.push_back(fire({0,cP1.x+20,cP1.y,cP1.w,cP1.h,v}));
    }

};

在这个类中,我尝试捕获vFire指针,但大小始终为0。

class colision {

public:
    badBoss _boss;
    void detectColision() {
        std::vector<badBoss::fire> lala = *_boss.pvFire;
        std::cout << lala.size() << std::endl;
    }

};

这是我的主要游戏

int main() {
  colision _colision;
  bool aktibo = true;
    while(aktibo) {
      _badBoss.drawBoss(ren);
      _colision.detectColision();       
    }
    return 0;
}

如何正确获取指针的值?

编辑:多亏了你的建议,我可以解决它。这就是问题所在:在colision类中,我在badBoss上做了一个新实例,当然,当对vFire向量的调用总是0时。

现在,我从主函数调用colsion,并使用正确的实例,如parameter和。。。。哇!!一切都很完美!

@molbdnilo有一个很好的观点。您应该在colision类中添加一个构造函数(或setter),该构造函数初始化boss对象。即

colision(badBoss boss) {
 _boss = boss;
}

在我看来,这是矢量指针初始化的问题:

class badBoss {
public:
    struct fire {
        int type, x, y;
        float v, vx, vy;
        int angle;
    };
    std::vector<fire> *vFire = new std::vector<fire>();
    // I don't think it's even needed
    //std::vector<fire> *pvFire = &vFire;

    void drawBoss(SDL_Renderer *ren) {
        // Isn't one value missing?
        vFire->push_back(fire({0,cP1.x+20,cP1.y,cP1.w,cP1.h,v}));
    }
};

现在,对于数据冲突

class collision {
public:
    void detectCollision() {
        std::cout << _boss.vFire->size() << std::endl;
    }
};

希望这能有所帮助!参考:指向矢量的指针

最新更新