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

C++ C++;从另一个类调用(向量)指针返回空大小,c++,vector,sdl,C++,Vector,Sdl,我正在尝试制作一个SDL迷你游戏,当我试图从另一个类调用向量指针时遇到了一个问题。问题是,当我调用函数时,结果是一个空向量 在这门课上,我每一帧都要调用drawBoss class badBoss { public: struct fire { int type, x, y; float v, vx, vy; int angle; }; std::vector<fire> vFire; std::vec

我正在尝试制作一个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}));
    }
如何正确获取指针的值

编辑:多亏了你的建议,我可以修复它。这就是问题所在: 在colision类中,我在badBoss上做了一个新实例,当然,当对vFire vector的调用始终为0时


现在我用正确的实例从主函数调用colision,比如parametre和…wallaaa!!一切都很完美

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

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-badBoss{
公众:
结构火灾{
int型,x,y;
浮点数v、vx、vy;
内角;
};
std::vector*vFire=new std::vector();
//我觉得根本不需要
//std::vector*pvFire=&vFire;
void drawBoss(SDL_渲染器*ren){
//没有一个值丢失吗?
vFire->push_back(开火({0,cP1.x+20,cP1.y,cP1.w,cP1.h,v}));
}
};
现在,对于数据冲突

class collision {

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

    }
};
类冲突{
公众:
void detectCollision(){

std::cout size()@molbdnilo有一个很好的观点。您应该在colision类中添加一个构造函数(或setter),用于初始化_boss对象

colision(badBoss boss) {
 _boss = boss;
}

为什么要将向量和指向向量的指针作为公共成员变量?是否尝试通过在
detectCollision()中直接访问向量来访问向量一个可能的场景是,你在C++中访问的<代码> BooBubs/Cuth.Actudio。PVFix与你所称的“代码> DoupBuffbadBoss
的实例传递给给定的
冲突
实例。你能显示
\u boss
的定义和初始化吗
collision
中的字段?谢谢你的回答@Alfonso。你的代码运行得很好,但我也有同样的问题。如果我确定std::cout,我可以有链接来检查整个代码吗?别着急,Alfonso,这只是一个爱好。这不是我的工作;-)你几乎不需要指向标准容器的指针。嗨@asif!!宾果!!这就是p问题!!!在colision类中,我初始化了一个新的而不是badBoss,当然,vFire总是0。谢谢大家!!;-)
class collision {

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

    }
};
colision(badBoss boss) {
 _boss = boss;
}